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

首頁 > 語言 > JavaScript > 正文

ES6新特性六:promise對象實例詳解

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

本文實例講述了ES6新特性之promise對象。分享給大家供大家參考,具體如下:

1. promise 介紹

它是一個對象,也就是說與其他JavaScript對象的用法,沒有什么兩樣;其次,它起到代理作用(proxy),充當(dāng)異步操作與回調(diào)函數(shù)之間的中介。它使得異步操作具備同步操作的接口,使得程序具備正常的同步運行的流程,回調(diào)函數(shù)不必再一層層嵌套。

它的思想是,每一個異步任務(wù)立刻返回一個Promise對象,由于是立刻返回,所以可以采用同步操作的流程。這個Promises對象有一個then方法,允許指定回調(diào)函數(shù),在異步任務(wù)完成后調(diào)用。

異步操作f1返回一個Promise對象,它的回調(diào)函數(shù)f2寫法如下

(new Promise(f1)).then(f2);

2. promise 對象的三種狀態(tài)

① 異步操作未完成(pending)
② 異步操作已完成(resolved)
③ 異步操作失敗(rejected)

3. 工作過程

Promise對象使用then方法添加回調(diào)函數(shù)。then方法可以接受兩個回調(diào)函數(shù),第一個是異步操作成功時(變?yōu)閞esolved狀態(tài))時的回調(diào)函數(shù),第二個是異步操作失敗(變?yōu)閞ejected)時的回調(diào)函數(shù)(可以省略)。一旦狀態(tài)改變,就調(diào)用相應(yīng)的回調(diào)函數(shù),這兩個回調(diào)函數(shù)都接受異步操作傳回的值作為參數(shù)。

promise.then( console.log, console.error);

4. then 的鏈?zhǔn)绞褂?/p>

① 首先then方法返回的一個新的promise對象,因此可以采用鏈?zhǔn)綄懛ā?/p>

② then方法的第一個參數(shù)是Resolved狀態(tài)的回調(diào)函數(shù),第二個參數(shù)(可選)是Rejected狀態(tài)的回調(diào)函數(shù)。

③ 如下,promise的狀態(tài)一旦變?yōu)閞esolved,就依次調(diào)用后面每一個then指定的回調(diào)函數(shù),每一步都必須等到前一步完成,才會執(zhí)行。最后一個then方法的回調(diào)函數(shù)console.log和console.error,用法上有一點重要的區(qū)別。console.log只顯示回調(diào)函數(shù)step3的返回值,console.error可以顯示step1、step2、step3之中任意一個發(fā)生的錯誤,Promises對象的錯誤有傳遞性。

promise .then(step1) .then(step2) .then(step3) .then(  console.log,  console.error );

5. promise 對象的使用

var promise = new Promise(function(resolve, reject) { // promise的構(gòu)造函數(shù),Promise構(gòu)造函數(shù)接受一個函數(shù)作為參數(shù),該函數(shù)的兩個參數(shù)分別是resolve和reject // 異步操作的代碼 if (/* 異步操作成功 */){  resolve(value);//將異步的操作結(jié)果作為參數(shù)傳遞出去 } else {  reject(error); }});

其中resolve和reject它們是兩個函數(shù),由JavaScript引擎提供,不用自己部署。

resolve函數(shù)的作用:將Promise對象的狀態(tài)從“未完成”變?yōu)椤俺晒Α保磸腜ending變?yōu)镽esolved),在異步操作成功時調(diào)用,并將異步操作的結(jié)果,作為參數(shù)傳遞出去;

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 普宁市| 新邵县| 香格里拉县| 康定县| 文山县| 宁津县| 宜阳县| 蕉岭县| 台前县| 丹江口市| 丁青县| 文成县| 武乡县| 中牟县| 青铜峡市| 沅江市| 大荔县| 新河县| 芜湖县| 凉山| 荥经县| 万载县| 和林格尔县| 靖西县| 肥城市| 马尔康县| 东光县| 平度市| 达州市| 沿河| 辉县市| 上饶市| 西华县| 海阳市| 永嘉县| 富平县| 浪卡子县| 新泰市| 古丈县| 滦南县| 穆棱市|