内射白浆一区二区在线观看_顶级欧美做受XXX000大乳_野狼AV午夜福利在线_国产精品亚洲一区二区无码_亚洲久热无码中文字幕人妖_国产免费人成视频在线观看_成人精品视频一区二区_自拍偷自拍亚洲精品10P_日日天日日夜日日摸_成人无码www免费视频苹果版

歡迎您訪問(wèn)什么是promise?帶你了解它的含義、特點(diǎn)及狀態(tài)改變!

什么是promise?帶你了解它的含義、特點(diǎn)及狀態(tài)改變

更新時(shí)間:2025-08-22 17:50:19作者:佚名

什么是promise

承諾,在代碼里的含義是保證在一段時(shí)間之后(一般涉及異步處理)會(huì)反饋一個(gè)結(jié)果,是異步處理的一種方法。從語(yǔ)言規(guī)則角度講,原生承諾是一個(gè)物件,能從中得知異步工作的進(jìn)展情況。

promise的特點(diǎn)

承諾存在三種情形,分別是待定,成功和失敗,只有非同步執(zhí)行的結(jié)果,才能判定當(dāng)前屬于哪一種情形,其他任何行為都無(wú)法更改這種情形。

promise只有兩種狀態(tài)改變:

處理中狀態(tài)轉(zhuǎn)為完成狀態(tài),

處理中狀態(tài),轉(zhuǎn)變?yōu)楸痪芙^結(jié)局。

狀態(tài)變更完成時(shí)稱作解決,一旦狀態(tài)變成了解決,就不能再次轉(zhuǎn)變?yōu)閷?shí)現(xiàn)。

promise實(shí)例操作

在這里插入圖片描述

首先創(chuàng)造了一個(gè)Promise實(shí)例

創(chuàng)建一個(gè)承諾,這個(gè)承諾接受一個(gè)函數(shù)作為參數(shù),該函數(shù)有兩個(gè)參數(shù),一個(gè)是解決,一個(gè)是拒絕,
    if(/*異步執(zhí)行成功*/){

JavaScript Promise教程_Promise狀態(tài)管理_promise是什么意思

resolve(value); }else{ reject(error); } }) promise.then(function(){ //回調(diào)執(zhí)行成功之后的操作 },function(){ //回調(diào)執(zhí)行失敗之后的操作,可選 });

Promise的創(chuàng)建方法需要傳入一個(gè)處理函數(shù),此函數(shù)包含兩個(gè)參數(shù),一個(gè)是兌現(xiàn)的回調(diào),另一個(gè)是拒絕的回調(diào),這兩個(gè)回調(diào)函數(shù)均由JavaScript環(huán)境負(fù)責(zé)實(shí)現(xiàn)。異步任務(wù)順利完成時(shí),就調(diào)用resolve方法,并將執(zhí)行結(jié)果作為參數(shù)傳遞進(jìn)去,若異步任務(wù)執(zhí)行失敗,則調(diào)用reject方法,并將出現(xiàn)的異常作為參數(shù)返回。一旦Promise對(duì)象創(chuàng)建完畢,就可通過(guò)then函數(shù)來(lái)分別設(shè)定成功情形與失敗情形下的處理操作。

promise是什么意思_Promise狀態(tài)管理_JavaScript Promise教程

接下來(lái)探討一下如何定義函數(shù)原型方法Promise的then方法Promise的catch方法

上述代碼也可以理解成這樣:

獲取到位于路徑/posts.json的JSON數(shù)據(jù)后,接著執(zhí)行一個(gè)操作,這個(gè)操作以傳入的名為posts的參數(shù)作為處理對(duì)象,在處理過(guò)程中需要實(shí)現(xiàn)一個(gè)功能,這個(gè)功能會(huì)處理傳入的數(shù)據(jù),并且在完成后進(jìn)行下一步的步驟
      // ...
}).catch(function(error) {
處理 getJSON 過(guò)程中的異常,處理上一個(gè)回調(diào)函數(shù)執(zhí)行時(shí)的故障
  console.log('發(fā)生錯(cuò)誤!', error);
});

承諾對(duì)象里的最終方法能夠?qū)崿F(xiàn)連續(xù)操作,它調(diào)用了承諾本身的接口,而承諾解析方法可以返回一個(gè)已解決狀態(tài)的承諾

把當(dāng)前實(shí)體改造成承諾形態(tài),涉及四種數(shù)據(jù)規(guī)格:

Promise.reject()Promise.all()

這種技術(shù)把好幾個(gè)承諾實(shí)例,重新封裝成一個(gè)承諾實(shí)例。

JavaScript Promise教程_promise是什么意思_Promise狀態(tài)管理

將多個(gè)承諾組合成一個(gè)新承諾,這個(gè)新承諾在所有原始承諾都成功時(shí)才成功,在任何一個(gè)原始承諾失敗時(shí)立即失敗

參數(shù)未必是數(shù)組,也可能是其他可迭代對(duì)象,但必須具備可迭代特性,且其中包含的每個(gè)元素(p1、p2、p3)都應(yīng)是 Promise 對(duì)象,若不是,則會(huì)先通過(guò) Promise.resolve 方法將其轉(zhuǎn)換為 Promise 對(duì)象promise是什么意思,然后再進(jìn)行后續(xù)操作。

var p = Promise.all([1,2,3]);
那個(gè)名為p2的變量,等于調(diào)用Promise.all函數(shù),參數(shù)是一個(gè)數(shù)組,里面包含數(shù)字1,數(shù)字2,數(shù)字3,以及一個(gè)已經(jīng)解決為444的Promise對(duì)象
創(chuàng)建一個(gè)名為p3的Promise對(duì)象,該對(duì)象將等待一個(gè)包含數(shù)字1,2,3以及一個(gè)拒絕狀態(tài)的Promise的完成,當(dāng)所有這些Promise都完成后,p3才會(huì)被解決或拒絕,其中拒絕狀態(tài)的值為555
setTimeout(function() {
    console.log(p);// Promise { : "fulfilled", : Array[3] }
       console.log(p2); // Promise { : "fulfilled", : Array[4] }
    console.log(p3); // Promise { : "rejected", : 555 }
});
p.then(function (posts) {
  // ..當(dāng)有返回值的時(shí)候才會(huì)回調(diào)

Promise狀態(tài)管理_promise是什么意思_JavaScript Promise教程

}).catch(function(reason){ // ... });

Promise.allSettled -- 兼容性不友好

這種做法和all任務(wù)類似,是為了糾正all任務(wù)在處理異常時(shí)的欠妥之處而設(shè)計(jì)的。它接收一組承諾作為輸入,然后生成一個(gè)承諾作為輸出,與all任務(wù)的主要區(qū)別在于,它不會(huì)發(fā)生中斷,即無(wú)論承諾是否成功,在所有承諾處理完畢后,我們都能獲取到每個(gè)承諾的狀態(tài)。

Promise.race()

這種技術(shù)同樣是將好幾個(gè)承諾對(duì)象,整合為一個(gè)新的承諾對(duì)象,其余方面與all相似,但與all的不同之處在于:race方法類似于競(jìng)賽,若干個(gè)實(shí)例同時(shí)進(jìn)行,最先抵達(dá)終點(diǎn)者即告成功,并解決該成功者,或者某個(gè)實(shí)例在途中發(fā)生意外導(dǎo)致異常,則宣告失敗,并拒絕該失敗者promise是什么意思起步網(wǎng)校,不論成功還是失敗,都優(yōu)先處理最先完成的那個(gè)。

Promise.try-- 提案

在運(yùn)用promise過(guò)程中,期望被promise封裝的函數(shù)體中同步代碼同步運(yùn)行,異步代碼異步處理,并且讓它們擁有共同的接口

例:當(dāng)同步函數(shù)被promise包裝后的執(zhí)行順序改變。

定義一個(gè)函數(shù)fn,當(dāng)被調(diào)用時(shí),會(huì)打印出文字同步1
Promise.resolve().then(fn)

JavaScript Promise教程_Promise狀態(tài)管理_promise是什么意思

console.log('同步2') //log后 //'同步2' //'同步1'

解決讓同步函數(shù)同步執(zhí)行,異步函數(shù)異步執(zhí)行現(xiàn)階段方法

over~有問(wèn)題留言

拓展:

借鑒:

為您推薦

by mistake與by accident的區(qū)別:人為錯(cuò)誤與意外驚喜的不同

accident,許多科學(xué)上的重大發(fā)現(xiàn)都是偶然的意外驚喜。她剛好在我們正要離開(kāi)時(shí)到達(dá),但我不能肯定這是出于偶然還是有意安排。chance,結(jié)果一定好的。哈哈,提問(wèn)者已經(jīng)選擇了一個(gè)回答,看來(lái)并非真想明白其間的區(qū)別和聯(lián)系。不過(guò),其他朋友有類似疑惑的看到或許有所助益。

2025-08-22 20:56

public domain的英文翻譯是什么意思?其用法和例句介紹

domain的英文翻譯是什么意思,詞典釋義與在線翻譯:英英釋義domain的用法和樣例:例句他們錯(cuò)誤地使用資金已經(jīng)危害到了公共領(lǐng)域。在許多國(guó)家這默認(rèn)是需要的,所以要是你不想他們受版權(quán)限制的話,你需要明確地把你的修改置于公共領(lǐng)域。詞匯搭配domain的相關(guān)資料:臨近單詞

2025-08-22 17:49

看完九型人格,驚覺(jué)自己竟是peacemaker,暈

看完九型人格,發(fā)現(xiàn)我竟然是個(gè)peacemaker,暈【欲望特質(zhì)】:追求和平  〖基本困思〗:我若不和善,就沒(méi)有人會(huì)愛(ài)我。  〖人際關(guān)系〗:  和平型(Peacemaker)在很多情況,你們都是和平使者,善解人意,隨和。在沒(méi)有壓力的時(shí)候,是個(gè)實(shí)干者和完美主義者,有壓力的時(shí)候就成了懷疑論者。

2025-08-21 17:44

介詞in、on和at用法全解析,附有例句助你理解

介詞是用來(lái)表示物體、人和地點(diǎn)之間相互關(guān)系的詞語(yǔ)。介詞in,on和at常被用來(lái)表示這些關(guān)系。這里有關(guān)于何時(shí)該用介詞的解釋,并附有例句來(lái)幫助你理解。c.in和行、隊(duì)伍等進(jìn)行搭配a.at與具體的地點(diǎn)進(jìn)行搭配a.on與物體表面進(jìn)行搭配使用onto來(lái)表示某人將某物放在物體表面。

2025-08-21 15:34

northwest是什么意思?你真的了解這個(gè)單詞嗎? 西北方向:阿申特

northwest是什么意思西北方向5英里外的阿申特島工黨在西北部發(fā)起了其選舉前的競(jìng)選活動(dòng)。南美洲遙遠(yuǎn)的西北部疆域。美國(guó)西北部的沿海地帶在中國(guó)云南省的西南部,座落著一個(gè)古老的小鎮(zhèn).此鳥(niǎo)只在東北、西北、東南和西南筑巢以免被發(fā)現(xiàn).馬爾馬拉海土耳其西北部的一個(gè)海,位于亞洲和歐洲之間.

2025-08-21 15:24

規(guī)范化具體指什么?從基礎(chǔ)、引證等方面為您詳細(xì)介紹

規(guī)范化的具體解釋是什么呢,我們通過(guò)以下幾個(gè)方面為您介紹:一、基礎(chǔ)解釋????【點(diǎn)此查看規(guī)范化詳細(xì)內(nèi)容】使合于一定標(biāo)準(zhǔn)語(yǔ)言規(guī)范化。五、關(guān)于規(guī)范化的詞語(yǔ)

2025-08-21 11:59

加載中...