1. 程式人生 > 其它 >javascript Promise

javascript Promise

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被執行後,再依次執行回撥列表中的函式。