Promise学习

我想说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()

不是很明白= =

你可能感兴趣的:(Promise学习)