当前位置: 首页 > 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.sadfv.cn/news/284886/

相关文章:

  • 用手机做网站服务器东莞网络营销推广软件
  • 深圳住房和城乡建设厅网站建筑工程管理局官网
  • 东莞营销型网站设计网页翻译功能
  • 小米路由器3做网站现在写博客还是做网站
  • 网站建设吧都匀网站建设公司
  • 网站建设 从用户角度开始三打哈网络推广平台
  • 网站平台建设要多久电子商务网站建设文献
  • 免费创办网站windows优化大师值得买吗
  • seo排名培训学校wordpress 内存优化
  • 建设行业网站专业网站制作设计公司哪家好
  • 关键词在线挖掘网站云服务器购买
  • 网站开发费用怎么入账在线生成logo设计
  • 备案网站转入阿里云在线制作图片网站
  • 网站域名的作用是什么意思建设一个网站的规划
  • 模板网站建设哪家专业网站引导页怎么做.
  • 自己做网站实时监控手机建网站 教程
  • 企业网站强制备案关于文化建设网站
  • 建设通和天眼查网站网站icp证明
  • 如何做卖衣服的网站网站界面设计欣赏
  • 重庆企业网站开发找个做游戏的视频网站
  • 6网站建设设计dj音乐网站建设
  • 上传网站的软件网站开发到上线的过程
  • 北京建设高端网站的企业网站建设既可以外包给专业的网站建设服务公司
  • 做网站收录的网站有哪些网站建设分金手指排名十一
  • 海淀营销型网站建设福州网红景点
  • 中铁建设中南公司官方网站开网站赚50万做
  • 网站建设与维护论文中国制造app下载安卓版
  • 网站信息发布制度建设wordpress 教育主题
  • 商城网站开发案例做的漂亮的商务网站
  • woocommerce做的网站js网站变灰色代码