摘要:是一個(gè)異步操作返回的對(duì)象,用來(lái)傳遞異步操作的消息??梢越鉀Q的問(wèn)題解決了回調(diào)地獄問(wèn)題,不會(huì)導(dǎo)致難以維護(hù)合并多個(gè)異步請(qǐng)求,節(jié)約時(shí)間。使用用來(lái)指定對(duì)象的狀態(tài)改變時(shí)要執(zhí)行的操作成功失敗接收一個(gè)數(shù)組,數(shù)組內(nèi)是實(shí)例,必須都成功呢才表示成功。
Promise 是一個(gè)異步操作返回的對(duì)象,用來(lái)傳遞異步操作的消息。 可以解決的問(wèn)題:
解決了回調(diào)地獄問(wèn)題,不會(huì)導(dǎo)致難以維護(hù);
合并多個(gè)異步請(qǐng)求,節(jié)約時(shí)間。
Promise 有三種狀態(tài):Pending Promise 對(duì)象實(shí)例創(chuàng)建時(shí)的初始態(tài);
Fulfilled 成功時(shí)的狀態(tài);
Rejected 失敗時(shí)的狀態(tài)。
使用 Promise: Promise.then():用來(lái)指定 Promise 對(duì)象的狀態(tài)改變時(shí)要執(zhí)行的操作let promise = new Promise(function (resolve, reject) { resolve("成功"); //reject("失敗"); }) promise.then(function (data) { console.log("data: ", data); },function (err) { console.log("err: ", err); })Promise.all():接收一個(gè)數(shù)組,數(shù)組內(nèi)是 Promise 實(shí)例,必須都成功呢才表示成功。 Promise.race():接收一個(gè)數(shù)組,數(shù)組內(nèi)是 Promise 實(shí)例,最早返回的對(duì)象成功了,就變?yōu)槌晒B(tài),如縣失敗了,就改變狀態(tài)為失敗態(tài)。
let fs = require("fs"); function read(url){ return new Promise(function(resolve, reject){ fs.readFile(url,"utf8",function(err, data){ if(err) reject( err); resolve( data); }) }) } Promise.all([read("1.txt"), read("2.txt")]).then(function (data) { console.log(data); },function (err) { console.log("err: ", err); }) Promise.race([read("1.txt"), read("2.txt")]).then(function (data) { console.log(data); },function (err) { console.log("err: ", err); })Promise.resolve():返回一個(gè) Promise 實(shí)例,這個(gè) Promise 實(shí)例處于 resolve 狀態(tài)。
Promise.resolve([1,2,3]).then(function(data){ console.log(data); });
輸出:[ 1, 2, 3 ]Promise.reject():返回一個(gè) Promise 實(shí)例,這個(gè) Promise 實(shí)例處于 reject 狀態(tài)。
Promise.reject([1,2,3]).then(null,function(err){ console.log("err",err) });
輸出:err [ 1, 2, 3 ]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93479.html
摘要:類的一個(gè)子類,表明斷言的失敗??捎糜跍y(cè)試回調(diào)函數(shù)的參數(shù)。使用比較法測(cè)試參數(shù)與參數(shù)是否不全等。等待的完成,如果是一個(gè)函數(shù),則立即調(diào)用該函數(shù)并等待返回的完成,然后檢查是否被。 FEAT FrontEnd Automates Test 前端全自動(dòng)化測(cè)試 序章 文章開(kāi)頭先引一個(gè)知乎上的問(wèn)答:如何進(jìn)行前端自動(dòng)化測(cè)試? 我相信做過(guò)前端的朋友都有這個(gè)疑問(wèn)。希望這篇文章里你能看到一些別人的測(cè)試方法,幫...
摘要:如果你把函數(shù)的指針地址作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來(lái)調(diào)用其所指向的函數(shù)時(shí),我們就說(shuō)這是回調(diào)函數(shù)。回調(diào)函數(shù)不是由該函數(shù)的實(shí)現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時(shí)由另外的一方調(diào)用的,用于對(duì)該事件或條件進(jìn)行響應(yīng)。 同期異步系列文章推薦談一談javascript異步j(luò)avascript異步與promisejavascript異步之Promise.all()、Promise.ra...
摘要:對(duì)比回調(diào)函數(shù)和暫時(shí)不管是什么,先看一下下面的代碼,看一看的好處?;卣{(diào)函數(shù)執(zhí)行一次首先,定義一個(gè)回調(diào)函數(shù),調(diào)用一次,看看這個(gè)代碼的寫法。上面的代碼中,在方法中需要傳遞兩個(gè)回調(diào)函數(shù),這樣看著會(huì)有點(diǎn)亂。 對(duì)比回調(diào)函數(shù)和Promise 暫時(shí)不管Promise是什么,先看一下下面的代碼,看一看Promise的好處。需要特別說(shuō)明的是,在這個(gè)對(duì)比的中,Promise和回調(diào)都沒(méi)有考慮存在異常的情況。 ...
摘要:否則不會(huì)得到異步之后的值對(duì)象的值,并沒(méi)有在中進(jìn)行處理,而是直接作為返回值返回到對(duì)象外面了這就是的魔法。當(dāng)生成器函數(shù)內(nèi)的邏輯執(zhí)行完畢且沒(méi)有錯(cuò)誤之后,這個(gè)對(duì)象返回值變?yōu)闋顟B(tài),且將生成器的返回值作為出來(lái)的值。 之前我在關(guān)于Promise的文章中提到了co這個(gè)庫(kù)。在這篇文章里,我將寫一寫自己對(duì)它的認(rèn)識(shí)。 Trust me,用了co庫(kù),你不想用別的,來(lái)它半斤異步調(diào)用你一口能吃仨。 但是我對(duì)Tj大...
摘要:說(shuō)明一點(diǎn),下面演示的請(qǐng)求或請(qǐng)求,都是采用百度中查詢到的一些接口,可能傳遞的有些參數(shù)這個(gè)接口并不會(huì)解析,但不會(huì)影響這個(gè)接口的使用。 fetch和XMLHttpRequest 如果看網(wǎng)上的fetch教程,會(huì)首先對(duì)比XMLHttpRequest和fetch的優(yōu)劣,然后引出一堆看了很快會(huì)忘記的內(nèi)容(本人記性不好)。因此,我寫一篇關(guān)于fetch的文章,為了自己看著方便,畢竟工作中用到的也就是一些...
閱讀 2032·2021-10-09 09:41
閱讀 1606·2021-09-28 09:36
閱讀 1108·2021-09-26 09:55
閱讀 1298·2021-09-10 11:17
閱讀 1154·2021-09-02 09:56
閱讀 2769·2019-08-30 12:58
閱讀 2938·2019-08-29 13:03
閱讀 1862·2019-08-26 13:40