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

专门做库存处理的网站网站建设seo推广

专门做库存处理的网站,网站建设seo推广,wordpress 抽奖,网站地图制作工具目录 实例方法 catch finally 静态方法 reslove reject race all allSettled any 实例方法 提供给promise实例的方法 包括catch 与finally catch Promise 实例的 catch() 方法用于注册一个在 promise 被拒绝时调用的函数。它会立即返回一个等效的 Promise 对象这可以允许你链式调用其他 promise 的方法。此方法是 Promise.prototype.then(undefined, onRejected) 的一种简写形式。 1 内部调用then方法此方法是 Promise.prototype.then(undefined, onRejected) 的一种简写形式。 2.处理异常 因为是实例化生成前抛出的异常 要 catch 捕获实例化生成函数执行前 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);});}};try {func(resolve, reject);} catch (error) {reject(error);}}catch(onRejected) {return this.then(undefined, onRejected);} // 测试代码const p new MyPromise((resolve, reject) {reject(error);// throw error;// return p2;// return 2;// return new MyPromise((resolve, reject) {// resolve(OK);// // reject(ERROR);// }); }); p.then((res) {console.log(res:, res); }).catch((error) {console.log(err:, err); }); finally Promise 实例的 finally() 方法用于注册一个在 promise 敲定兑现或拒绝时调用的函数。它会立即返回一个等效的 Promise 对象这可以允许你链式调用其他 promise 方法。 finally() 方法类似于调用 then(onFinally, onFinally) 这可以让你避免在 promise 的 then() 和 catch() 处理器中重复编写代码。 onFinally 回调函数不接收任何参数。这种情况恰好适用于你不关心拒绝原因或兑现值的情况因此无需提供它。如果你想在 promise 敲定时进行一些处理或者清理无论其结果如何那么 finally() 方法会很有用。 finally(onFinally) {return this.then(onFinally, onFinally);} const p new MyPromise((resolve, reject) {reject(error);// throw error; }); p.then((res) {console.log(res:, res); }).catch((error) {console.log(err:, error);}).finally(() {console.log(一定执行);});静态方法 提供给promise静态的方法 包括以下6个 resloverejectraceallallsettledany reslove Promise.resolve() 静态方法将给定的值转换为一个 Promise。如果该值本身就是一个 Promise那么该 Promise 将被返回如果该值是一个 thenable 对象Promise.resolve() 将调用其 then() 方法及其两个回调函数否则返回的 Promise 将会以该值兑现 判断传入值promise直接返回转为promise并返回  fulfilled状态 thenable对象指的是具有then方法的对象。Promise.resolve方法会将这个对象转为Promise对象然后立即执行thenable对象的then方法 /*** 静态方法 resolve* 判断传入值* promise直接返回* 转为promise并返回 fulfilled状态*/static resolve(value) {if (value instanceof MyPromise) {return value;}return new MyPromise((resolve, reject) {resolve(value);});}// 测试代码// const p MyPromise.resolve( // new MyPromise((resolve, reject) { // resolve(ok); // // reject(error); // // throw error; // }) // ); const p MyPromise.resolve(贾公子); p.then((res) {console.log(res:, res);},(error) {console.log(err:, error);} ); reject Promise.reject() 静态方法返回一个已拒绝rejected的 Promise 对象拒绝原因为给定的参数。  static reject(value) {return new MyPromise((resolve, reject) {reject(value);});} // 测试代码 const p MyPromise.reject(贾公子); p.then((res) {console.log(res:, res);},(error) {console.log(err:, error);} ); race  Promise.race() 静态方法接受一个 promise 可迭代对象作为输入并返回一个 promise 这个返回的 promise 会随着第一个 promise 的敲定而敲定。 接收一个promise数组 返回的结果以第一个和promise返回的结果为准 * 返回promise * 判断是否为数组(Array.isArray) 错误信息  Argument is not iterable * 等待第一个敲定 (forEach取出每一个promise执行 一旦执行就改变状态resolve包装一层 因为有可能传递的不是promise) /*** 静态方法 race* 返回promise* 判断是否为数组 错误信息 Argument is not iterable* 等待第一个敲定*/static race(promises) {// 1.返回promisereturn new Promise((resolve, reject) {// 2.判断是否为数组 错误信息 Argument is not iterableif (!Array.isArray(promises)) {return reject(new TypeError(Argument is not iterable));}// 3.等待第一个敲定promises.forEach((p) {MyPromise.resolve(p).then((res) resolve(res),(err) reject(err));});});} }// 测试代码const p1 new MyPromise((resolve, reject) {setTimeout(() {resolve(ok);}, 2000); }); const p2 new MyPromise((resolve, reject) {setTimeout(() {reject(err);}, 1000); }); const p MyPromise.race([p1, p2]); // const p MyPromise.race(); p.then((res) {console.log(res:, res);},(error) {console.log(err:, error);} );all  Promise.all() 静态方法接受一个 Promise 可迭代对象作为输入并返回一个 Promise 。当所有输入的 Promise 都被兑现时返回的 Promise 也将被兑现即使传入的是一个空的可迭代对象并返回一个包含所有兑现值的数组。如果输入的任何 Promise 被拒绝则返回的 Promise 将被拒绝并带有第一个被拒绝的原因。 1.返回promise2.判断是否为数组 错误信息  Argument is not iterable3.空数组直接兑现4.判断全部兑现4.1记录结果(索引记录保证兑现顺序与传入顺序一样)4.2判断 全部兑现 (不能使用length 因为使用索引添加的可能导致没有全部兑现)5.处理第一个拒绝 static all(promises) {// 1.返回promisereturn new Promise((resolve, reject) {// 2.判断是否为数组 错误信息 Argument is not iterableif (!Array.isArray(promises)) {return reject(new TypeError(Argument is not iterable));}// 3.空数组直接兑现promises.length 0 resolve(promises);// 4.判断全部兑现const result [];let count 0;promises.forEach((p, index) {MyPromise.resolve(p).then((res) {// 4.1记录结果(索引记录保证兑现顺序与传入顺序一样)result[index] res;// 4.2判断 全部兑现 (不能使用length 因为使用索引添加的可能导致没有全部兑现)count;count promises.length resolve(result);},(err) {// 5.处理第一个拒绝reject(err);});});});}// 测试代码 const p1 MyPromise.resolve(1); const p2 new MyPromise((resolve, reject) {setTimeout(() {// resolve(ok);reject(err);}, 1000); }); const p3 贾公子; const p MyPromise.all([p1, p2, p3]); // const p MyPromise.all();、 // const p MyPromise.all([]);p.then((res) {console.log(res:, res);},(error) {console.log(err:, error);} );allSettled Promise.allSettled() 静态方法将一个 Promise 可迭代对象作为输入并返回一个单独的 promise。当所有输入的 Promise 都已敲定时包括传入空的可迭代对象时返回的 Promise 将被兑现并带有描述每个 Promise 结果的对象数组。 * 1.传入的promise都已敲定,即可获取兑现结果  *  2.结果数组: [{status: fulfilled, value: 1},{status: rejected, reason: err}]  *  3.结果数组的顺序,和传入的promise数组的顺序是一样的  *  4.空数组直接兑现  *  5.不为数组 错误信息  Argument is not iterable 1.返回promise  可以让结果继续.then 2.数组判断 不为数组直接抛出异常3.为空直接敲定  判断length4.等待全部敲定 使用forech 循环处理 利用resolve包装一下4.1记录结果(result) 记录敲定的次数(count 不使用push 会导致没有全部兑现4.2 处理兑现{ status: FULFILLED, value: res }4.3处理拒绝{ status: REJECTED, reason: err })成功或者失败都是resolve static allSettled(promises) {// 1.返回promisereturn new Promise((resolve, reject) {// 2.数组判断if (!Array.isArray(promises)) {return reject(new TypeError(Argument is not iterable));}// 3.为空直接敲定promises.length 0 resolve(promises);// 4.等待全部敲定const result [];let count 0;promises.forEach((p, index) {MyPromise.resolve(p).then((res) {// 4.1记录结果result[index] { status: FULFILLED, value: res }; // 4.2 处理兑现{ status: FULFILLED, value: res }// 记录敲定的次数count;// 不论成功失败都是resolvecount promises.length resolve(result);},(err) {// 4.1记录结果result[index] { status: REJECTED, reason: err }; // 4.3处理拒绝{ status: REJECTED, reason: err }// 记录敲定的次数count;// 不论成功失败都是resolvecount promises.length resolve(result);});});});} // 测试代码 const p1 MyPromise.resolve(1); const p2 new MyPromise((resolve, reject) {setTimeout(() {// resolve(ok);reject(err);}, 1000); }); const p3 贾公子; const p MyPromise.allSettled([p1, p2, p3]); // const p MyPromise.allSettled(); // const p MyPromise.allSettled([]);p.then((res) {console.log(res:, res);},(error) {console.log(err:, error);} ); any Promise.any() 静态方法将一个 Promise 可迭代对象作为输入并返回一个 promise 当输入的任何一个 Promise 兑现时这个返回的 Promise 将会兑现并返回第一个兑现的值。当所有输入 Promise 都被拒绝包括传递了空的可迭代对象时它会以一个包含拒绝原因数组的 AggregateErrorAggregateErrorAggregateError 拒绝。 AggregateError 对象代表了包装了多个错误对象的单个错误对象。当一个操作需要报告多个错误时例如 promise.any当传递给它的所有承诺都被拒绝时就会抛出该错误。 * 参数promise数组  * 结果  *    获取到第一个成功的结果  *    获取到所有拒绝失败的原因 AggregateError: All promises were rejected[拒绝原因1拒绝原因n]  *    传入空数组直接拒绝 AggregateError: All promises were rejected[]  *    不传入数组直接报错 1.返回promise 2.数组判断 错误信息 Argument is not iterable3.空数组直接拒绝 AggregateError([错误原因]All promises were rejected[)4.等待结果4.1第一个兑现4.2全部拒绝  static any(promises) {// 1.返回promisereturn new Promise((resolve, reject) {// 2.数组判断 错误信息 Argument is not iterableif (!Array.isArray(promises)) {return reject(new TypeError(Argument is not iterable));}// 3.空数组直接拒绝 AggregateError([错误原因]All promises were rejected[)promises.length 0 reject(new AggregateError(promises, All promises were rejected));const errors [];let count 0;// 4.等待结果promises.forEach((p, index) {MyPromise.resolve(p).then((res) {// 4.1第一个兑现resolve(res);},(err) {// 4.2全部拒绝errors[index] err;count;count promises.length reject(new AggregateError(errors, All promises were rejected));});});});} // 测试代码 const p1 new MyPromise((resolve, reject) {setTimeout(() {// resolve(ok);reject(err1);}, 1000); }); const p2 new MyPromise((resolve, reject) {setTimeout(() {// resolve(ok);reject(err2);}, 2000); }); // const p3 贾公子; const p3 MyPromise.reject(贾公子);const p MyPromise.any([p1, p2, p3]); // const p MyPromise.any(); // const p MyPromise.any([]);p.then((res) {console.log(res:, res);},(error) {// console.log(err:, error);console.dir(error);} );
http://www.yutouwan.com/news/284886/

相关文章:

  • 手机网站建设文章深圳标本制作
  • 哪些行业没有做网站百度首页的ip地址
  • 沈阳做企业网站做一个小程序需要多少钱?
  • 色弱做网站黄骅港天气预报
  • 义乌高端网站设计品牌上海网站备案要求吗
  • 大学生网站设计论文3000字网址二维码在线生成
  • 营销软文范例大全300网站优化需要做什么
  • 可以做问卷调查的网站兰州网络推广方案
  • 谷歌搜索关键词排名wordpress cdn优化
  • 做网站推广的难点、新手学做网站图纸
  • 关于茶网站模板360搜索推广
  • wordpress软件下载站主题企业信息查询系统官网江苏
  • 黄山网站优化wordpress the7 慢
  • 天津网站建设排名黄骅招聘信息最新
  • 购物商城网站交换友情链接平台
  • 怎样建设自己的商业网站建设银行网银显示网站丢失
  • 域名注册最好的网站网站建设推广费会计分录
  • 长沙做网站开发多少钱建设银行网站开通查询密码
  • 企业网站备案怎么填写厦门网站制作建设
  • 做网站需注意事项江门网站制作培训
  • 404 没有找到网站 试试申请收录吧建立网站的链接结构有哪几种形式?简述其各自的优缺点
  • 网站后台如何做银座网上商城官网
  • 石家庄个人做网站东营市住宅与房地产信息网
  • 做的网站在不同浏览器视频网站设计模板
  • 维护中网站炒股网站怎么做
  • dw制作个人网站的具体步骤做网站设计参考文献
  • wordpress 网站打开速度慢快速优化关键词排名
  • 招聘工作的网站有哪些专业的免费网站建设
  • discuz做服务网站陕西住建电子证书查询
  • 规范 加强网站建设管理临沂网站建设临沂