发布网友 发布时间:2023-03-14 20:31
共1个回答
热心网友 时间:2023-11-15 06:04
参考文章: 《Promise,从入门到放弃》
catch 方法主要需要做到的就是异常穿透:
要实现 catch ,我们可以直接调用 iPromise.then 方法,但不传入 onResolve 方法。
同时,我们需要给 then 中的 onResolve 和 onRejected 赋初始值,顺便避免了传入 undefined 或其他非函数值而报错:
Promise.resolve 方法返回成功或者失败的 Promise 对象。如果传入的参数为非 Promise 类型的对象,则返回的结果为成功的 Promise 对象。如果传入的参数为 Promise 对象,则参数 Promise 返回的结果就是 Promise.resolve 返回的结果。
实现它,我们需要用到 静态方法 :
Promise.reject 方法返回一个失败的 Promise 对象, promiseResult 的值为 Promise.reject 的参数。
实现:
Promise.all 方法接收的参数是由n个 Promise 对象的数组。返回新的 Promise 对象,只有所有的 Promise 对象都成功才成功,返回的对象的 promiseResult 为包含所有 Promise 对象的数组。只要有一个失败了就直接失败,返回的对象的 promiseResult 为失败的 Promise 对象的执行结果。
Promise.race方法接收的参数是由n个Promise对象的数组。返回新的 Promise 对象,第一个完成的Promise的结果状态就是最终结果的状态。
使用 setTimeout 将其变为异步任务。
......没啥好说的,从上到下敲一遍,不说运用自如,怎么也得是一脸懵*吧。