例項化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 functionquerydata() ,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物件 如...