javascript Promise
阿新 • • 發佈:2022-12-12
Promise物件構造時需要一個引數,這個引數必須是一個函式。
let prom = new Promise(function (resolve, reject) { console.log("Run"); // 進行費時間的非同步操作 ... // if(success) { resolve(res_you_want_return) } else { reject(error_msg) } }).then(function(res_i_want_to_get_when_success){ console.log('OK') console.log(res_i_want_to_get_when_success) // 這裡的 res_i_want_to_get_when_success 就是 res_you_want_return }).catch(function(error_msg){ console.error(error_msg) // 這裡的error_msg就是上面的error_msg });
當一個Promise物件被構造時,立即 在另外的執行緒中非同步執行傳入建構函式的函式。
在執行的同時,then方法也被執行,then的作用是在“成功回撥列表”中新增一個函式,catch則是在“失敗回撥列表”中新增一個回撥函式。添加回調函式並不意味著要執行回撥函式,所以then/catch方法是即時結束的,不會阻塞主執行緒。等到resolve或者reject被執行後,再依次執行回撥列表中的函式。