摘要:對象表示異步操作的最終完成或失敗及其結(jié)果值。狀態(tài)初始狀態(tài),未完成或拒絕。返回使用給定值解析的對象。根據(jù)的屬性選擇返回對應(yīng)的狀態(tài)簡簡單單的敘述下常用的幾個屬性,有不對的地方請指教昨天看了一篇文章,還是挺有啟發(fā)的。。。。。
Promise
The Promise object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value.
Promise對象表示異步操作的最終完成(或失敗)及其結(jié)果值。
new Promise(executor);
executor:
傳遞參數(shù)resolve和reject的函數(shù)。executor函數(shù)由Promise實現(xiàn)立即執(zhí)行,傳遞resolve和reject函數(shù)(在Promise構(gòu)造函數(shù)返回創(chuàng)建的對象之前調(diào)用executor)。當(dāng)調(diào)用resolve和reject函數(shù)時,分別代表已完成和已失敗。當(dāng)執(zhí)行程序完成,成功則調(diào)用resolve,出現(xiàn)錯誤則調(diào)用reject。
2.Description(描述)Promise允許異步方法返回與同步方法類似的值:異步方法不是立即返回最終值,而是返回一個Promise,在將來的某個時候提供該值。
Promise狀態(tài):
pending : 初始狀態(tài),未完成或拒絕。
fulfilled : 意味著操作成功完成。
rejected : 表示操作失敗。
返回的Promise的prototype下有.then()和.catch()方法
Promise.all(iterable)
返回一個Promise,這個Promise在所有可迭代參數(shù)中的所有Promise都fulfilled成功返回,或者在可迭代參數(shù)中的一個Promise為rejects失敗時返回。
var promise1 = new Promise(function(resolve, reject) { setTimeout(resolve("promise1"), 100); }); var promise2 = new Promise(function(resolve, reject) { setTimeout(resolve("promise2"), 50); }); Promise.all([promise1, promise2]).then(function(values){ console.log(values); }); // log: Array [promise1, promise2]
Promise.race(iterable))
返回一個Promise,這個Promise在所有可迭代參數(shù)中只要有一個Promise執(zhí)行完畢,則會立刻執(zhí)行.then(),之后會繼續(xù)執(zhí)行剩下的Promise直到結(jié)束。
var promise1 = new Promise(function(resolve, reject) { setTimeout(function(){ console.log("resolve--------promise1") resolve("promise1") }, 5000); }); var promise2 = new Promise(function(resolve, reject) { setTimeout(function(){ console.log("resolve--------promise2") resolve("promise2") }, 3000); }); var promise3 = new Promise(function(resolve, reject) { setTimeout(function(){ console.log("reject--------promise3 => 第一個異步任務(wù)執(zhí)行完畢") reject("promise3") }, 1000); }); Promise.race([promise1, promise2, promise3]).then(function(success){ console.log("success--------"+success); }).catch(function(error){ console.log("error--------"+error+"=> 立即執(zhí)行.then(),之后會繼續(xù)執(zhí)行未完成的異步任務(wù)promise2、promise1"); }); // /* log:reject--------promise3 => 第一個異步任務(wù)執(zhí)行完畢 error--------promise3=立即執(zhí)行.then(),之后會繼續(xù)執(zhí)行未完成的異步任務(wù)promise2、promise1 index.html:20 resolve--------promise2 index.html:14 resolve--------promise1 */
Promise.reject()
返回因給定原因被拒絕的Promise對象。
function fnc(obj){ return new Promise(function(reslove,reject){ if(obj) reslove("success") else reject("error") }) } fnc(false).then(function(success){ console.log("success------"+success) },function(error){ console.log("error------"+error) }) //log : error------error **
Promise.resolve()
返回使用給定值解析的Promise對象。如果值是thenable(即具有then方法),返回的promise將“遵循”該thenable,采用其最終狀態(tài),否則,返回的promise將用值來實現(xiàn)。通常,如果不知道一個值是否是一個promise,那么promise.resolve(value)它,并將返回值作為一個promise來處理。
function fnc(obj){ return new Promise(function(reslove,reject){ //根據(jù)obj的屬性選擇返回對應(yīng)的狀態(tài) if(obj) reslove("success") else reject("error") }) } fnc(false).then(function(success){ console.log("success------"+success) },function(error){ console.log("error------"+error) }) //log : error------error
簡簡單單的敘述下Promise常用的幾個屬性,有不對的地方請指教~昨天看了一篇文章,還是挺有啟發(fā)的。。。。。
前端專業(yè)方向的盡頭
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/109044.html
摘要:總結(jié)用方法創(chuàng)建對象用或添加對象的處理函數(shù)它的作用是為實例添加狀態(tài)改變時的回調(diào)函數(shù)。方法是的別名,用于指定發(fā)生錯誤時的回調(diào)函數(shù)。 一、為什么需要Promise Javascript 采用回調(diào)函數(shù)(callback)來處理異步編程。從同步編程到異步回調(diào)編程有一個適應(yīng)的過程,但是如果出現(xiàn)多層回調(diào)嵌套,也就是我們常說的回調(diào)金字塔(Pyramid of Doom),絕對是一種糟糕的編程體驗。于是...
閱讀 3616·2021-11-24 09:39
閱讀 2546·2021-11-15 11:37
閱讀 2211·2021-11-11 16:55
閱讀 5155·2021-10-14 09:43
閱讀 3703·2021-10-08 10:05
閱讀 3006·2021-09-13 10:26
閱讀 2327·2021-09-08 09:35
閱讀 3535·2019-08-30 15:55