Promise catch() 方法

admin發表於2019-07-24

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

此方法的作用與p.then(undefined, onRejected)功能相同,p是一個Promise物件。

也就是當Promise物件變為Rejected狀態時,catch的回撥函式。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
p.catch(onRejected);

引數解析:

(1).onRejected:必需,當p的狀態變為Rejected時,此回撥函式就會執行。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let p = new Promise(function(resolve, reject) {
  if (false) {
    resolve();
  } else {
    reject();
  }
});

p.then(function () {
  console.log("螞蟻部落一");
}).catch(function () {
  console.log("螞蟻部落二")
});

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

a:3:{s:3:\"pic\";s:43:\"portal/201907/24/204617y7bgvgdem28judpd.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

p物件變為Rejected狀態,就會執行catch()方法的回撥函式。

程式碼分析如下:

(1).Promise建構函式執行後,立馬呼叫其回撥函式。

(2).經過if else語句判斷執行reject()函式,Promise物件變為Rejected狀態。

(3).於是執行catch的回撥函式,列印結果為"螞蟻部落二"。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let p = new Promise(function(resolve, reject) {
  reject();
});

p.then(function () {
  //code
}).then(function () {
  //code
}).catch(function () {
  console.log("antzone")
});

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

a:3:{s:3:\"pic\";s:43:\"portal/201907/24/204646m31jorvozv7uu7uu.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

catch()可以捕獲它之前Rejected狀態變化,不必緊鄰。

相關文章