当前位置: 首页 > news >正文

外管局网站 报告怎么做dedecms 购物网站

外管局网站 报告怎么做,dedecms 购物网站,蜗牛影院看电影,怒江州建设局网站目录 链式编程 处理异常 和普通内容 链式编程---处理返回promise 链式编程---处理重复引用 链式编程--rejected 链式编程--处理padding状态 链式编程 处理异常 和普通内容 1.返回promise实例#xff1a;在原本then方法里边创建新promise2.获取返回值#xff1a;把原本…目录 链式编程 处理异常 和普通内容 链式编程---处理返回promise 链式编程---处理重复引用 链式编程--rejected  链式编程--处理padding状态 链式编程 处理异常 和普通内容 1.返回promise实例在原本then方法里边创建新promise2.获取返回值把原本的then的逻辑迁移到新promise中 是同步执行的不受影响方便传递给新创建的promise3.处理返回值 调用新promise的 resolve 4.处理异常 try catch 捕获异常 调用新promise的 reject function runAsyncTask(callback) {if (typeof queueMicrotask function) {queueMicrotask(callback);} else if (typeof MutationObserver function) {const obs new MutationObserver(callback);const divNode document.createElement(div);obs.observe(divNode, { childList: true });divNode.innerHTML 贾公子;} else {setTimeout(callback, 0);} }/**链式编程 处理异常 和普通内容* 1.返回promise实例* 2.获取返回值* 2.1处理返回值* 2.2处理异常***/ const PENDING pending; const FULFILLED fulfilled; const REJECTED rejected;class MyPromise {state PENDING;result undefined;#handlers [];constructor(func) {const resolve (result) {if (this.state PENDING) {this.state FULFILLED;this.result result;this.#handlers.forEach(({ onFulfilled }) {onFulfilled(this.result);});}};const reject (result) {if (this.state PENDING) {this.state REJECTED;this.result result;this.#handlers.forEach(({ onRejected }) {onRejected(this.result);});}};func(resolve, reject);}then(onFulfilled, onRejected) {onFulfilled typeof onFulfilled function ? onFulfilled : (x) x;onRejected typeof onRejected function? onRejected: (x) {throw x;};// 1.返回promise实例const p2 new MyPromise((resolve, reject) {if (this.state FULFILLED) {runAsyncTask(() {try {// 2.获取返回值const x onFulfilled(this.result);// 2.1处理返回值resolve(x);// 2.2处理异常} catch (error) {reject(error);}});} else if (this.state REJECTED) {runAsyncTask(() {onRejected(this.result);});} else if (this.state PENDING) {this.#handlers.push({onFulfilled: () {runAsyncTask(() {onFulfilled(this.result);});},onRejected: () {runAsyncTask(() {onRejected(this.result);});},});}});return p2;} }// 测试代码const p new MyPromise((resolve, reject) {resolve(1);// reject(error); }); p.then((result) {console.log(p1, result);throw new Error(异常);// return 2; }).then((result) {console.log(p2, result);},(err) {console.log(p2, err);} );链式编程---处理返回promise 1.使用 instanceof判断返回值是否为 MyPromise实例 2.如果是代表传递的返回值是promise 调用传递的promise的then方法 3.在成功回调中调用resolve失败回调中传递reject把结果传递 function runAsyncTask(callback) {if (typeof queueMicrotask function) {queueMicrotask(callback);} else if (typeof MutationObserver function) {const obs new MutationObserver(callback);const divNode document.createElement(div);obs.observe(divNode, { childList: true });divNode.innerHTML 贾公子;} else {setTimeout(callback, 0);} }/****/ const PENDING pending; const FULFILLED fulfilled; const REJECTED rejected;class MyPromise {state PENDING;result undefined;#handlers [];constructor(func) {const resolve (result) {if (this.state PENDING) {this.state FULFILLED;this.result result;this.#handlers.forEach(({ onFulfilled }) {onFulfilled(this.result);});}};const reject (result) {if (this.state PENDING) {this.state REJECTED;this.result result;this.#handlers.forEach(({ onRejected }) {onRejected(this.result);});}};func(resolve, reject);}then(onFulfilled, onRejected) {onFulfilled typeof onFulfilled function ? onFulfilled : (x) x;onRejected typeof onRejected function? onRejected: (x) {throw x;};const p2 new MyPromise((resolve, reject) {if (this.state FULFILLED) {runAsyncTask(() {try {const x onFulfilled(this.result);// 1.处理返回promiseif (x instanceof MyPromise) {// 2.调用then方法x.then((res) {resolve(res);},(err) {reject(err);});} else {resolve(x);}} catch (error) {reject(error);}});} else if (this.state REJECTED) {runAsyncTask(() {onRejected(this.result);});} else if (this.state PENDING) {this.#handlers.push({onFulfilled: () {runAsyncTask(() {onFulfilled(this.result);});},onRejected: () {runAsyncTask(() {onRejected(this.result);});},});}});return p2;} }// 测试代码const p new MyPromise((resolve, reject) {resolve(1); }); p.then((result) {return new MyPromise((resolve, reject) {resolve(2);// reject(err);}); }).then((result) {console.log(p2, result);},(err) {console.log(p2, err);} );链式编程---处理重复引用 在then的回调函数中直接把then的结果返回了会抛出重复引用的问题 1.x就是then回调函数的返回值then方法返回的promise就是p2 2.比较x跟p2是否全等 是就抛出异常  function runAsyncTask(callback) {if (typeof queueMicrotask function) {queueMicrotask(callback);} else if (typeof MutationObserver function) {const obs new MutationObserver(callback);const divNode document.createElement(div);obs.observe(divNode, { childList: true });divNode.innerHTML 贾公子;} else {setTimeout(callback, 0);} }const PENDING pending; const FULFILLED fulfilled; const REJECTED rejected;class MyPromise {state PENDING;result undefined;#handlers [];constructor(func) {const resolve (result) {if (this.state PENDING) {this.state FULFILLED;this.result result;this.#handlers.forEach(({ onFulfilled }) {onFulfilled(this.result);});}};const reject (result) {if (this.state PENDING) {this.state REJECTED;this.result result;this.#handlers.forEach(({ onRejected }) {onRejected(this.result);});}};func(resolve, reject);}then(onFulfilled, onRejected) {onFulfilled typeof onFulfilled function ? onFulfilled : (x) x;onRejected typeof onRejected function? onRejected: (x) {throw x;};const p2 new MyPromise((resolve, reject) {if (this.state FULFILLED) {runAsyncTask(() {try {const x onFulfilled(this.result);// 1.处理重复的引用if (x p2) {console.log(----);throw new TypeError(Chaining cycle detected for promise #Promise);}if (x instanceof MyPromise) {x.then((res) {resolve(res);},(err) {reject(err);});} else {resolve(x);}} catch (error) {reject(error);}});} else if (this.state REJECTED) {runAsyncTask(() {onRejected(this.result);});} else if (this.state PENDING) {this.#handlers.push({onFulfilled: () {runAsyncTask(() {onFulfilled(this.result);});},onRejected: () {runAsyncTask(() {onRejected(this.result);});},});}});return p2;} }// 测试代码const p new MyPromise((resolve, reject) {resolve(1); }); const p2 p.then((res) {return p2; }); p2.then((res) {},(err) {console.log(err);} );链式编程--rejected  完成链式第一步要返回promise 处理Fulfilled时候已完成 通过trycatch 处理异常 抽离函数 resolvePromise 处理 重复引用 以及返回promise的情况 调用函数测试状态 function runAsyncTask(callback) {if (typeof queueMicrotask function) {queueMicrotask(callback);} else if (typeof MutationObserver function) {const obs new MutationObserver(callback);const divNode document.createElement(div);obs.observe(divNode, { childList: true });divNode.innerHTML 贾公子;} else {setTimeout(callback, 0);} }const PENDING pending; const FULFILLED fulfilled; const REJECTED rejected;class MyPromise {state PENDING;result undefined;#handlers [];constructor(func) {const resolve (result) {if (this.state PENDING) {this.state FULFILLED;this.result result;this.#handlers.forEach(({ onFulfilled }) {onFulfilled(this.result);});}};const reject (result) {if (this.state PENDING) {this.state REJECTED;this.result result;this.#handlers.forEach(({ onRejected }) {onRejected(this.result);});}};func(resolve, reject);}/***处理异常*/then(onFulfilled, onRejected) {onFulfilled typeof onFulfilled function ? onFulfilled : (x) x;onRejected typeof onRejected function? onRejected: (x) {throw x;};const p2 new MyPromise((resolve, reject) {if (this.state FULFILLED) {runAsyncTask(() {try {const x onFulfilled(this.result);resolvePromise(p2, x, resolve, reject);} catch (error) {reject(error);}});} else if (this.state REJECTED) {// 1.处理异常runAsyncTask(() {try {// 2.获取返回值const x onRejected(this.result);// 4.调用函数resolvePromise(p2, x, resolve, reject);} catch (error) {reject(error);}});} else if (this.state PENDING) {this.#handlers.push({onFulfilled: () {runAsyncTask(() {onFulfilled(this.result);});},onRejected: () {runAsyncTask(() {onRejected(this.result);});},});}});return p2;} } // 3.抽取函数 function resolvePromise(p2, x, resolve, reject) {if (x p2) {throw new TypeError(Chaining cycle detected for promise #Promise);}if (x instanceof MyPromise) {x.then((res) {resolve(res);},(err) {reject(err);});} else {resolve(x);} }// 测试代码const p new MyPromise((resolve, reject) {reject(1); }); const p2 p.then(undefined, (err) {// throw error;// return p2;// return 2;return new MyPromise((resolve, reject) {resolve(OK);reject(ERROR);}); }); p2.then((res) {console.log(p2--res, res);},(err) {console.log(p2--err, err);} );链式编程--处理padding状态 PENDING状态要根据异步执行的结果存储到handlers数组中不同的函数onFulfilled || onRejected两个处理链式编程的逻辑完全一样 * 处理异常 trycatch捕获异常 * 获取返回值 获取第一个promise的返回值 * 调用函数 处理 重复引用以及 返回promise的情况 function runAsyncTask(callback) {if (typeof queueMicrotask function) {queueMicrotask(callback);} else if (typeof MutationObserver function) {const obs new MutationObserver(callback);const divNode document.createElement(div);obs.observe(divNode, { childList: true });divNode.innerHTML 贾公子;} else {setTimeout(callback, 0);} }function resolvePromise(p2, x, resolve, reject) {if (x p2) {throw new TypeError(Chaining cycle detected for promise #Promise);}if (x instanceof MyPromise) {x.then((res) {resolve(res);},(err) {reject(err);});} else {resolve(x);} } const PENDING pending; const FULFILLED fulfilled; const REJECTED rejected;class MyPromise {state PENDING;result undefined;#handlers [];constructor(func) {const resolve (result) {if (this.state PENDING) {this.state FULFILLED;this.result result;this.#handlers.forEach(({ onFulfilled }) {onFulfilled(this.result);});}};const reject (result) {if (this.state PENDING) {this.state REJECTED;this.result result;this.#handlers.forEach(({ onRejected }) {onRejected(this.result);});}};func(resolve, reject);}/*** 处理异常* 获取返回值* 调用函数*/then(onFulfilled, onRejected) {onFulfilled typeof onFulfilled function ? onFulfilled : (x) x;onRejected typeof onRejected function? onRejected: (x) {throw x;};const p2 new MyPromise((resolve, reject) {if (this.state FULFILLED) {runAsyncTask(() {try {const x onFulfilled(this.result);resolvePromise(p2, x, resolve, reject);} catch (error) {reject(error);}});} else if (this.state REJECTED) {runAsyncTask(() {try {const x onRejected(this.result);resolvePromise(p2, x, resolve, reject);} catch (error) {reject(error);}});} else if (this.state PENDING) {this.#handlers.push({onFulfilled: () {runAsyncTask(() {// 处理异常try {// 获取返回值const x onFulfilled(this.result);// 调用函数resolvePromise(p2, x, resolve, reject);} catch (error) {reject(error);}});},onRejected: () {runAsyncTask(() {// 处理异常try {// 获取返回值const x onRejected(this.result);// 调用函数resolvePromise(p2, x, resolve, reject);} catch (error) {reject(error);}});},});}});return p2;} }// 测试代码const p new MyPromise((resolve, reject) {setTimeout(() {resolve(1);}, 2000); }); const p2 p.then((res) {// throw error;// return p2;// return 2;return new MyPromise((resolve, reject) {setTimeout(() {resolve(OK);}, 2000);// reject(ERROR);}); }); p2.then((res) {console.log(p2--res, res);},(err) {console.log(p2--err, err);} );
http://www.pierceye.com/news/304271/

相关文章:

  • 公司做网站怎么做账网站建设都需要买什么东西
  • seo网站模板深圳建设局和住建局
  • 全国做网站的公司有哪些正规网站做菠菜广告
  • 成都有哪些做公司网站的公司动漫制作专业用什么笔记本电脑
  • 模型外包网站网站建设费用 多少钱
  • 课程资源网站开发 jsp免费做网站自助建站
  • 陕西网站备案代理网站代码隐蔽代码
  • 做网站应该注意免费网站开发合同
  • 网站运营推广怎做网站引导制作
  • 在川航网站购票后怎么做公司黄页网
  • html音乐网页完整代码长春做网站优化的公司
  • wordpress 网站标题为什么尽量不要备案域名
  • 营销型企业网站建设ppt百度一下你就知道123
  • 网络优化师自学网站建设银行网站的特点
  • 苏州网站建设规划网站域名年费
  • 建筑效果图素材网站网站设计证书
  • 一个网站备案多个域名吗合肥万户网站建设
  • 小型企业网站排名前十做网站的条件
  • 成都网站建设有名的公司网上商城制作哪家好
  • 做网站宣传多少钱黔东南网站设计公司
  • 网站开发人员职业分析wordpress数据库替换网址
  • ps切片工具做网站道滘镇网站仿做
  • 电子商务他们的代表网站html5视频网站模板
  • 广州网站建设乐云seo上海到北京高铁最快几小时
  • wordpress 音乐网站网站建设开发软件有哪些方面
  • 湛江网站营销163网站是jsp做的吗
  • 营山网站建设陕西做网站的公司地址
  • 十大网站黄页免费加盟办厂代加工
  • 上海 网站建设google深圳建网站 (报价)
  • 响应式做的比较好的网站校园网认证登录入口