整理一些 Promise 相關的觀念與問題。文內節錄自 promise 問題集
重點整理
- 瀏覽器的 window 有一個 Promise,可以直接使用
.resolve.reject.race.all。 - 一般建立 Promise 需要用
new並且需要指定resolve否則會報錯。 Promise.then只有在resolve被執行後才會執行(.catch同理)。.finally有resolve或reject執行後會跟著執行,換句話說沒有執行resolve或reject,finally也不會執行。.then和.catch都會返回一個新的 Promise。所以.then或.catch返回的值不能是 Promise 本身,否則會造成死循環。.then可以傳入兩個function,第二個function可以視為是.catch的簡寫。但如果傳入非function會發生透傳。(question3-5).finally不接受任何的參數,也就是在.finally中是無法知道P romise 最終的狀態是 resolved 還是 rejected。