最麻煩的非同步。
簡述
我想它最大的用途是用來處裡「非同步」的行為。
舉個例子:
| 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。