最麻煩的非同步。
簡述
我想它最大的用途是用來處裡「非同步」的行為。
舉個例子:
1 | const sleep = new Promise((resolve, reject) => { |
簡單來說,不管你在 Promise 裡面做什麼非同步操作,then
都會等到 resolve 被 trigger 才會執行。
再來看個例子:
1 | function sleep (ms) { |
這邊只是想確認你知道流程是什麼:
sleep(1000)
會回傳一個 Promise,而這個 Promise 會在一秒後呼叫 resolve,因此第一個then
就會在一秒之後被執行。接著,
then
裡又回傳了sleep(1000)
,等於又回傳了一個 Promise,所以一秒後 Promise 又呼叫 resolve,執行了下一個then
。
另外,因為 resolve 並沒有傳入任何值,所以兩個 then
都只會拿到 undefined
。