国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

ES6關(guān)于Promise的用法詳解

2024-05-06 15:34:35
字體:
供稿:網(wǎng)友

Node的產(chǎn)生,大大推動了Javascript這門語言在服務(wù)端的發(fā)展,使得前端人員可以以很低的門檻轉(zhuǎn)向后端開發(fā)。

當然,這并不代表迸發(fā)成了全棧。全棧的技能很集中,絕不僅僅是前端會寫一些HTML和一些交互,后臺熟悉數(shù)據(jù)庫的增刪查改。

想必接觸過Node的人都知道,Node是以異步(Async)回調(diào)著稱的,其異步性提高了程序的執(zhí)行效率,但同時也減少了程序的可讀性。如果我們有幾個異步操作,并且后一個操作需要前一個操作返回的數(shù)據(jù)才能執(zhí)行,這樣按照Node的一般執(zhí)行規(guī)律,要實現(xiàn)有序的異步操作,通常是一層加一層嵌套下去。

為了解決這個問題,ES6提出了Promise的實現(xiàn)。

含義

Promise 對象用于一個異步操作的最終完成(或失敗)及其結(jié)果值的表示。簡單點說,它就是用于處理異步操作的,異步處理成功了就執(zhí)行成功的操作,異步處理失敗了就捕獲錯誤或者停止后續(xù)操作。

它的一般表示形式為:

new Promise(  /* executor */  function(resolve, reject) {    if (/* success */) {      // ...執(zhí)行代碼      resolve();    } else { /* fail */      // ...執(zhí)行代碼      reject();    }  });

其中,Promise中的參數(shù)executor是一個執(zhí)行器函數(shù),它有兩個參數(shù)resolve和reject。它內(nèi)部通常有一些異步操作,如果異步操作成功,則可以調(diào)用resolve()來將該實例的狀態(tài)置為fulfilled,即已完成的,如果一旦失敗,可以調(diào)用reject()來將該實例的狀態(tài)置為rejected,即失敗的。

我們可以把Promise對象看成是一條工廠的流水線,對于流水線來說,從它的工作職能上看,它只有三種狀態(tài),一個是初始狀態(tài)(剛開機的時候),一個是加工產(chǎn)品成功,一個是加工產(chǎn)品失敗(出現(xiàn)了某些故障)。同樣對于Promise對象來說,它也有三種狀態(tài):

    pending:初始狀態(tài),也稱為未定狀態(tài),就是初始化Promise時,調(diào)用executor執(zhí)行器函數(shù)后的狀態(tài)。 fulfilled:完成狀態(tài),意味著異步操作成功。 rejected:失敗狀態(tài),意味著異步操作失敗。

它只有兩種狀態(tài)可以轉(zhuǎn)化,即

    操作成功:pending -> fulfilled 操作失敗:pending -> rejected

并且這個狀態(tài)轉(zhuǎn)化是單向的,不可逆轉(zhuǎn),已經(jīng)確定的狀態(tài)(fulfilled/rejected)無法轉(zhuǎn)回初始狀態(tài)(pending)。

方法

Promise.prototype.then()

Promise對象含有then方法,then()調(diào)用后返回一個Promise對象,意味著實例化后的Promise對象可以進行鏈式調(diào)用,而且這個then()方法可以接收兩個函數(shù),一個是處理成功后的函數(shù),一個是處理錯誤結(jié)果的函數(shù)。

如下:

var promise1 = new Promise(function(resolve, reject) { // 2秒后置為接收狀態(tài) setTimeout(function() {  resolve('success'); }, 2000);});promise1.then(function(data) { console.log(data); // success}, function(err) { console.log(err); // 不執(zhí)行}).then(function(data) { // 上一步的then()方法沒有返回值 console.log('鏈式調(diào)用:' + data); // 鏈式調(diào)用:undefined }).then(function(data) { // ....});            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 汉川市| 县级市| 政和县| 吉木萨尔县| 泰州市| 汪清县| 汾阳市| 搜索| 青浦区| 砀山县| 台湾省| 晋州市| 鹿泉市| 凤翔县| 聂拉木县| 阿克陶县| 泸定县| 高州市| 南昌市| 内乡县| 津南区| 丰顺县| 时尚| 兖州市| 明水县| 和平县| 庆阳市| 白沙| 西乌珠穆沁旗| 兰西县| 巨鹿县| 体育| 泾阳县| 曲沃县| 肥乡县| 旺苍县| 丰台区| 报价| 安新县| 汽车| 昂仁县|