Promise非同步程式設計

2022-09-07 20:36:26 字數 2451 閱讀 5622

例項化promise物件,建構函式中傳遞函式,該函式中用於處理非同步任務

resolve和reject兩個引數用於處理成功和失敗兩種情況,並通過p.then獲取處理結果

在呼叫then時可以只傳入正常情況函式處理,不傳入異常情況函式,即只處理成功情況

/*

我們使用new來構建乙個promise promise的建構函式接收乙個引數,是函式,並且傳入兩個引數:

resolve,reject, 分別表示非同步操作執行成功後的**函式和非同步操作執行失敗後的**函式  

*/var p = new promise(function

(resolve, reject)

else

}, 100);

});//5 promise例項生成以後,可以用then方法指定resolved狀態和reject狀態的**函式

//在then方法中,你也可以直接return資料而不是promise物件,在後面的then中就可以接收到資料了

p.then(function

(data),

function

(info));

/*

基於promise傳送ajax請求

*/function

querydata(url)

else

};xhr.open('get', url);

xhr.send(

null

); });

return

p; }

//普通情況

//傳送多個ajax請求並且保證順序

// 如果上乙個then返回值return是乙個普通物件。下乙個鏈式then中的引數就是這個普通物件,這個then的呼叫者是系統自動建立的promise物件用於保證鏈式呼叫

// 如果返回return的是promise物件,那麼下乙個then處理的就是上乙個then返回的promise物件的方法

3. promise常用物件方法

//all表示所有非同步成功執行

//all 中的引數 [p1,p2,p3]   和 返回的結果result是陣列一 一對應["hello tom", "hello jerry", "hello spike"]

//race最快的乙個非同步成功執行,其他不管

//由於p1執行較快,promise的then()將獲得結果'p1'。p2,p3仍在繼續執行,但執行結果將被丟棄。

promise.race([p1,p2,p3]).then(function

(result))

1. 此介面使用需要匯入對應的js檔案

1. await關鍵字只能在使用async定義的函式中使用

2. await後面可以直接跟乙個 promise例項物件 

3. 任何乙個async函式都會隱式返回乙個promise   我們可以使用then 進行鏈式程式設計 

4. 新增await之後 當前的await 返回結果之後才會執行後面的** 

async function

querydata() ,1000);

})return

ret;

}querydata().then(

function

(data))

Promise 非同步程式設計

promise 是非同步程式設計的解決方案,他代表承諾,便是一定會丟擲兩種狀態,狀態一經確定就不會改變 編譯成功 resolve value 為 必選 編譯失敗 reject error 可選 使用then 接收正確的丟擲 then 後面接 catch function error 可以簡寫為fun...

Promise非同步程式設計

當我們用 ajax去請求有依賴的多個資料的時候,編寫會形成漏斗形狀的結構,可讀性差,可以使用es6提供的promise promise概述 promise是非同步程式設計的一種解決方案,從語法上講,promise是乙個物件,從它可以獲得非同步操作的訊息 使用promise有以下好處 可以避免多層非同...

非同步程式設計 Promise任務鏈

講解promise任務鏈之前先看乙個例子 new promise resolve,reject then then 猜猜控制台會列印什麼東西呢,正確答案是 reject 2 resolve 3 想知道為什麼,繼續往下看 promise chainthen函式執行後會返回乙個新的promise物件 如...