處理非同步(回應)的操作
有時等待非同步(asynchronous)的操作時,不知要等到多久才有回應,那就要用到promise。
promise會負責看守非同步操作的回應,並讓程式繼續往下執行。
當成功執行非同步操作會呼叫resolve,失敗便呼叫reject。
假設有一個程式用setTimeout扮作非同步的操作,要5秒後才有回應。
用promise捕捉住操作(隨時)的回應,但不會阻礙程式向下的線性執行。
整個程式執行後。當非同步的操作完成,才會呼叫then作後隨的動作。
1 | document.writeln("程式開始~");//1. |
- 程式開始
- 產生promise
- 已啟動promise
- 已執行程式
- 等待非同步操作完成,resolve接應回應
- promise.then執行非同步操作完成後的動作
resolve/reject會接受完成之非同步操作的回傳,及後promise的then接續下個行動。