我想说Promise真的是繁重
首先你要知道Promise是用来解决回调深渊的
promise.then.catch
1、catch不仅要catch主体promise,而且还会catch异步then返回的promise,就是说在catch之前的内容如果报错都会被catch捕获到
2、如果promise没有reject,也没有catch,那么最终会触发unhandledRejection事件,process.on('unhandledRejection',(err,p)=>{})
promise.all()
可将一串promise对象一并执行,准从:
1、全部标记完,则promise.all标记为reslove,进入then
2、有一个标记为reject,promise标记为reject,进入then
3、promise.all参数分先后,依次执行
4、如果内部promise有自己的catch,则不会进入最终的catch
promise.race()
promise.all()为所有promise依次执行,而race本身意为赛跑,一群promise一起,谁先执行完,以谁的结果去执行then.
这里留有问题:是否存在promise参数先后?
eg.放入两个promise,一个读取图片,另外一个5s后报错,如果5s内能读完,进入正常回调,如果,5s到了还没执行,提示太慢了,不进行回调(只是帮助理解,并不推荐实际使用)
promise.resolve()、promise.reject()
立即生成对象,并以对应的状态进行then回调
promise.done()、promise.finally()
promise链可以无限扩展,最后一环的结果存在无法catch错误,规范.done()作为结尾,无需参数,只作用于输出参数,保证error thorw
finally()接受普通函数,无论promise结果如何,都会执行
promise.try()
不是很明白= =
网友评论