我想說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()
不是很明白= =