整理一些 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。