本文實例講述了ES6 Promise對象概念與用法。分享給大家供大家參考,具體如下:
1.Promise概念
Promise 對象有三種狀態:
① Fulfilled 可以理解為成功的狀態
② Rejected 可以理解為失敗的狀態
③ Pending 既不是 Fulfilld 也不是 Rejected 的狀態,可以理解為 Promise 對象實例創建時候的初始狀態
2.三個重要方法
在 Promise 對象當中有三個重要方法————resolve, reject和then。
resolve 方法可以使 Promise 對象的狀態改變成成功,同時傳遞一個參數用於後續成功後的操作,在這個例子當中就是 Hello World!字符串。
reject 方法則是將 Promise 對象的狀態改變為失敗,同時將錯誤的信息傳遞到後續錯誤處理的操作。
function printHello (ready) {
return new Promise(function (resolve, reject) {
if (ready) {
resolve("Hello");
} else {
reject("Good bye!");
}
});
}
function printWorld () {
alert("World");
}
function printExclamation () {
alert("!");
}
printHello(true)
.then(function(message){
alert(message);
})
.then(printWorld)
.then(printExclamation); //分別彈出 Hello World !三個彈窗
上述例子通過鏈式調用的方式,按順序打印出了相應的內容。then 可以使用鏈式調用的寫法原因在於,每一次執行該方法時總是會返回一個 Promise 對象。另外,在 then onFulfilled 的函數當中的返回值,可以作為後續操作的參數,因此上面的例子也可以寫成:
function printHello (ready) {
return new Promise(function (resolve, reject) {
if (ready) {
resolve("Hello");
} else {
reject("Good bye!");
}
});
}
printHello(true).then(function (message) {
return message;
}).then(function (message) {
return message + ' World';
}).then(function (message) {
return message + '!';
}).then(function (message) {
alert(message);
}); //一個彈窗 Hello World !
希望本文所述對大家ECMAscript程序設計有所幫助。