亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

ES6 Promise對象的含義和基本用法分析

2024-05-06 16:52:09
字體:
來源:轉載
供稿:網友

本文實例講述了ES6 Promise對象的含義和基本用法。分享給大家供大家參考,具體如下:

1.Promise的含義

Promise是異步編程的一種解決方案,比傳統的解決方案(回調函數和事件)更合理更強大。

所謂Promise,簡單說就是一個容器,里面保存著某個未來才會結束的事件 (通常是一個異步操作)的結果。從語法上說,Promise是一個對象,從它可以獲取異步操作的消息。

Promise對象有以下2個特點:

1.對象的狀態不受外界影響。Promise對象代表一個異步操作,有三種狀態:Pending(進行中)、Resolved(已完成)Rejected(已失敗)。只有異步操作的結果,可以決定當前是哪一種狀態,任何其他操作都無法改變這個狀態。這也是Promise這個名字的由來,它的英語意思就是“承諾”,表示其他手段無法改變。

2.一旦狀態改變,就不會再變,任何時候都可以得到這個結果。Promise對象的狀態改變,只有兩種可能:從Pending變為Resolved;從Pending變為Rejected。只要這兩種情況發生,狀態就凝固了,不會再變了,會一直保持這個結果。就算改變已經發生了,你再對Promise對象田靜回調函數,也會立即得到這個結果。這與事件(Event)完全不同,事件的特點是,如果你錯過了它,再去監聽,是得不到結果的。

有了Promise對象,就可以把異步操作以同步操作的流程表達出來,避免了層層嵌套的回調函數。此外,Promise對象提供了統一的接口,使得控制異步操作更加容易。

2.基本用法

ES6規定,Promise對象是一個構造函數,用來生成Promise實例

var promise = new Promise(function(resolve,reject){ // ... some code if(/* 異步操作成功 */){  resolve(value); }else{  reject(error); }});

Promise構造函數接受一個函數作為參數,該函數的兩個參數分別是resolvereject。它們是兩個函數,又JavaScript引擎提供,不是自己部署。

resolve函數的作用,將Promise對象的狀態從“未完成”變成“成功”(即從Pending變為Resolved),在異步操作成功時調用,并將異步操作的結果,作為參數傳遞出去;
reject函數的作用是,在異步操作失敗時調用,并將異步操作報出的錯誤,作為參數傳遞出去。

Promise實例生成以后,可以用then方法分別制定Resolved狀態和Rejected狀態的回調函數:

promise.then(function(value){ // sucess},function(error){ // failure});

then方法可以接受2個回調函數作為參數,第二個函數是可選的,不一定要提供。這兩個函數都接受Promise對象傳出的值作為參數。

下面是一個Promise對象的簡單例子:

function timeout(ms){ return new Promise((resolve,reject)=>{  setTimeout(resolve,ms,'done'); });}timeout(100).then((value)=>{ console.log(value);});

上面代碼中,timeout方法返回一個Promise實例,表示一段事件以后才會發生的結果。過了指定的時間(ms參數)以后,Promise實例的狀態變為Resolved,就會觸發then方法綁定的回調函數。

Promise新建后就會立即執行

let promise = new Promise(function(resolve,rejeact){ console.log('Promise'); resolve();});promise.then(function(){ console.log('Resolved');});console.log('Hi');// Promise// Hi// Resolved

上面代碼中,Promise新建后立即執行,所以首先輸出的是”Promise”,然后then方法指定的回調函數,將在當前腳本所有同步任務執行完才會執行,所以”Resolved”最后輸出。

下面是異步加載圖片的例子:

function loadImageAsync(url){ return new Promise(function(resolve,reject){  var image = new Image();  image.onload = function(){   resolve(image);  };  image.onerror = function(){   reject(new Error('Could not load image at' + url));  };  image.src = url; });}

下面是一個用Promise對象實現Ajax操作的例子:

var getJSON = function(url){ var promise = new Promise(function(resolve,reject){  var client = new XMLHttpRequest();  client.open('GET',url);  client.onreadystatechange = handler;  client.responseType = 'json';  client.setRequestHeader('Accept','application/json');  client.send();  function handler(){   if(this.readyState !== 4){    return;   }   if(this.status === 200){    resolve(this.response);   }else{    reject(new Error(this.statusText));   }  } }); return promise;};//getJSON('/posts.jons').then(function(json){ consoloe.log(json);},function(error){ console.log('出錯了');});

希望本文所述對大家JavaScript程序設計有所幫助。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品稀缺呦系列在线| 久久伊人91精品综合网站| 国产精品爽爽ⅴa在线观看| 欧美亚洲视频一区二区| 国产97在线播放| 69国产精品成人在线播放| 日本精品在线视频| 国产精品91一区| 亚洲综合小说区| 一区二区欧美亚洲| 欧美成人精品一区二区三区| 精品久久久一区二区| 国产精品视频在线播放| 日韩视频免费大全中文字幕| 91手机视频在线观看| 欧美尺度大的性做爰视频| 欧美猛交ⅹxxx乱大交视频| 久久精品一偷一偷国产| 日韩av毛片网| 日本三级韩国三级久久| 国产精品久久色| 国产精品久久久久久久美男| 国产精品视频自拍| 亚洲国产精品成人一区二区| 国产精品久久久久久久久久久久| 亚洲欧美国产视频| 日韩欧美国产成人| 91久热免费在线视频| 黑人巨大精品欧美一区二区一视频| 欧美日韩国产在线播放| 亚洲综合第一页| 国产精品久久久久久av福利软件| 欧美成人久久久| 欧美亚洲国产精品| 美女扒开尿口让男人操亚洲视频网站| 国产一区二区三区在线免费观看| 久久精彩免费视频| 中文字幕视频在线免费欧美日韩综合在线看| 久久99精品久久久久久噜噜| 欧美精品情趣视频| 成人国产精品久久久| 欧美专区国产专区| 国产盗摄xxxx视频xxx69| 91免费版网站入口| 国产精品高潮视频| 中文字幕日韩av| 日韩在线欧美在线国产在线| 中文字幕最新精品| 黑人精品xxx一区| 国产裸体写真av一区二区| 国产精品网红直播| 精品日韩视频在线观看| 久久久成人av| 欧美激情综合亚洲一二区| 日本亚洲欧美三级| 日韩av快播网址| 亚洲国产精品大全| 欧美亚洲视频在线看网址| 5252色成人免费视频| 国产在线日韩在线| 国内精品国产三级国产在线专| 国产精品一区二区久久国产| 亚洲美女福利视频网站| 在线精品国产成人综合| 欧美小视频在线| 国产精品一区久久| 久久免费国产精品1| 亚洲性夜色噜噜噜7777| 欧美综合在线第二页| 亚洲成人亚洲激情| 成人性生交大片免费看视频直播| 97精品在线视频| 欧美夫妻性生活视频| 欧美在线欧美在线| 亚洲成人精品视频| 中文字幕日韩在线视频| 日本精品视频在线播放| 成人乱人伦精品视频在线观看| 91精品国产综合久久香蕉922| 日韩美女在线观看一区| 亚洲自拍小视频免费观看| 久久视频免费在线播放| 欧美日韩国产精品专区| 欧美疯狂性受xxxxx另类| 久久久久在线观看| 日韩性生活视频| 精品小视频在线| 欧美日韩精品中文字幕| 国产精品网址在线| 日韩美女福利视频| 久久精品亚洲94久久精品| 日韩欧美在线看| 亚洲欧美激情四射在线日| 久久亚洲精品一区| 国产亚洲精品久久久久久牛牛| www国产亚洲精品久久网站| 亚洲精品欧美极品| 国产成人精品最新| 日韩精品中文在线观看| 亚洲女同精品视频| 国产精品综合不卡av| 色哟哟入口国产精品| 亚洲欧美精品中文字幕在线| 在线精品视频视频中文字幕| 青青在线视频一区二区三区| 欧美另类在线播放| 色爱av美腿丝袜综合粉嫩av| 亚洲国产精品yw在线观看| 国产亚洲精品激情久久| 成人国产精品色哟哟| 国产欧美一区二区三区在线看| 中文字幕欧美日韩va免费视频| 欧美美女操人视频| 欧美精品电影免费在线观看| 欧美韩国理论所午夜片917电影| 91深夜福利视频| 欧美理论电影在线观看| 欧美丰满老妇厨房牲生活| 超在线视频97| 精品久久久久久久久中文字幕| 91在线视频导航| 国产精品久久久久久网站| 久久久久久国产三级电影| 日韩在线视频免费观看| 欧美猛交ⅹxxx乱大交视频| 国产亚洲成av人片在线观看桃| 欧美激情免费看| 庆余年2免费日韩剧观看大牛| xxx成人少妇69| www亚洲精品| 国产精品福利在线观看| 亚洲精品二三区| 成人疯狂猛交xxx| 亚洲天堂免费在线| 国产成人精品一区二区三区| 久久久免费精品| 亚洲第一免费网站| 国产精品18久久久久久麻辣| 国产欧美精品日韩| 岛国精品视频在线播放| 久久久久久亚洲精品不卡| 日韩av在线免费看| 色黄久久久久久| 国产区精品在线观看| 久久99久国产精品黄毛片入口| 久久久久亚洲精品| 久久精品福利视频| 国产免费一区视频观看免费| 国产一区二区丝袜高跟鞋图片| 亚洲аv电影天堂网| 国产999精品久久久| 国产精品爽爽ⅴa在线观看| 91精品久久久久久久久不口人| 国内精品美女av在线播放| 深夜精品寂寞黄网站在线观看| 亚洲免费av片| 57pao成人国产永久免费| 亚洲尤物视频网| 色噜噜久久综合伊人一本| 91福利视频在线观看| 精品香蕉一区二区三区| 日韩大片免费观看视频播放| 亚洲第一区中文字幕| 日韩免费高清在线观看|