Promise.resolve() 方法

admin發表於2019-07-25

關於Promise物件的基本介紹可以參閱JavaScript Promise 物件一章節。

Promise.resolve()方法是Promise的靜態方法, 返回一個以給定引數值解析後的Promise物件。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
Promise.resolve(value);

引數解析:

(1).value:可選,用來待解析的引數。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let p = Promise.resolve();
p.then(function () {
  console.log("螞蟻部落");
});

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201907/25/110335x3mm0kp3mtmtltot.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

如果Promise.resolve()沒有引數,直接返回一個Resolved狀態的Promise物件。

於是會執行then的第一個回撥函式,所以列印出"螞蟻部落"。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let p = Promise.resolve("螞蟻部落");
p.then(function (value) {
  console.log(value);
});

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201907/25/110402ethedkkf5jt0tdzs.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

如果Promise.resolve()方法的引數是值型別,同樣返回一個Resolved狀態的Promise物件、

引數傳遞給then()方法的第一個回撥函式,於是列印結果是"螞蟻部落"。

上面的程式碼等同於如下程式碼:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let p = new Promise(function (resolve, reject) {
  resolve("螞蟻部落")
})
p.then(function (value) {
  console.log(value);
});

程式碼比較簡單,不再做介紹,再看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let p = new Promise(function (resolve, reject) {
  resolve("螞蟻部落")
})
let newP = Promise.resolve(p);
console.log(newP==p);
newP.then(function (value) {
  console.log(value)
})

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201907/25/110453xmg5tx50dxrdp0wy.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

如果引數是一個Promise物件,那麼將會直接返回這個Promise物件。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let thenable = {
  then: function(resolve, reject) {
    reject("螞蟻部落");
  }
};
let p = Promise.resolve(thenable);
p.then(function () {
  //code
}).catch(function (value) {
  console.log(value)
})

如果引數是一個thenable物件(具有then方法的物件),Promise.resolve方法會將這個物件轉為Promise物件,然後就立即執行thenable物件的then方法;Promise物件的狀態會由thenable物件的then方法決定。

相關文章