ES6 Promise對象概念與用法分析
本文實例講述了ES6 Promise對象概念與用法。分享給大家供大家參考,具體如下:
1.Promise概念
Promise 對象有三種狀態(tài):
① Fulfilled 可以理解為成功的狀態(tài)
② Rejected 可以理解為失敗的狀態(tài)
③ Pending 既不是 Fulfilld 也不是 Rejected 的狀態(tài),可以理解為 Promise 對象實例創(chuàng)建時候的初始狀態(tài)
2.三個重要方法
在 Promise 對象當(dāng)中有三個重要方法————resolve, reject和then。
resolve 方法可以使 Promise 對象的狀態(tài)改變成成功,同時傳遞一個參數(shù)用于后續(xù)成功后的操作,在這個例子當(dāng)中就是 Hello World!字符串。
reject 方法則是將 Promise 對象的狀態(tài)改變?yōu)槭?,同時將錯誤的信息傳遞到后續(xù)錯誤處理的操作。
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 !三個彈窗
上述例子通過鏈?zhǔn)秸{(diào)用的方式,按順序打印出了相應(yīng)的內(nèi)容。then 可以使用鏈?zhǔn)秸{(diào)用的寫法原因在于,每一次執(zhí)行該方法時總是會返回一個 Promise 對象。另外,在 then onFulfilled 的函數(shù)當(dāng)中的返回值,可以作為后續(xù)操作的參數(shù),因此上面的例子也可以寫成:
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程序設(shè)計有所幫助。
相關(guān)文章
微信小程序基于picker實現(xiàn)級聯(lián)菜單
這篇文章主要為大家詳細(xì)介紹了微信小程序基于picker實現(xiàn)級聯(lián)菜單,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02JS函數(shù)節(jié)流和函數(shù)防抖問題分析
這篇文章主要介紹了JS函數(shù)節(jié)流和函數(shù)防抖問題分析,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-12-12鼠標(biāo)劃過實現(xiàn)延遲加載并隱藏層的js代碼
鼠標(biāo)劃過延遲加載隱藏層的效果,想必大家都有見到過吧,在本文將為大家詳細(xì)介紹下使用js是如何實現(xiàn)的,感興趣的朋友可以參考下2013-10-10