淺析promise
阿新 • • 發佈:2018-05-01
executor 原因 floor 對象 () function 最終 返回結果 異步 ——作為其參數。當異步任務順利完成且返回結果值時,會調用
Promise是一個構造函數,可以通過new 操作符獲取一個promise對象,promise者,人如其名也。對,就是承諾。顯示生活中,我們承諾別人一件事,一般會在將來某個時間兌現承諾。而 Promise 對象用於表示一個異步操作的最終狀態(完成或失敗),以及其返回的值(摘自MDN)。
1. 創建Promise
Promise
對象是由關鍵字 new
及其構造函數來創建的。該構造函數會?把一個叫做“處理器函數”(executor function)的函數作為它的參數。這個“處理器函數”接受兩個函數——resolve
和 reject
resolve
函數;而當異步任務失敗且返回失敗原因(通常是一個錯誤對象)時,會調用reject
函數。
2.狀態
一個 Promise
有以下幾種狀態:
- pending: 初始狀態,既不是成功,也不是失敗狀態。
- fulfilled: 意味著操作成功完成。
- rejected: 意味著操作失敗。
3.栗子
我們來模擬一次考試,考試的結果我們不知道,但是在有結果後我們保證會做出通知(異步),如果及格執行resolve回調,不及格執行reject回調。以下是簡單實現。
new Promise(function(resolve,reject){var score = Math.floor(Math.random()*100); if(score>60){ resolve(score) } else{ reject(score) } }).then(score=>console.log(‘及格了,歐耶‘,score)).catch(score=>console.log(‘掛科了,繼續努力‘,score))
淺析promise