1. 程式人生 > >淺析promise

淺析promise

executor 原因 floor 對象 () function 最終 返回結果 異步

Promise是一個構造函數,可以通過new 操作符獲取一個promise對象,promise者,人如其名也。對,就是承諾。顯示生活中,我們承諾別人一件事,一般會在將來某個時間兌現承諾。而 Promise 對象用於表示一個異步操作的最終狀態(完成或失敗),以及其返回的值(摘自MDN)。

1. 創建Promise

Promise 對象是由關鍵字 new 及其構造函數來創建的。該構造函數會?把一個叫做“處理器函數”(executor function)的函數作為它的參數。這個“處理器函數”接受兩個函數——resolvereject

——作為其參數。當異步任務順利完成且返回結果值時,會調用 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