2 回答
TA貢獻2080條經驗 獲得超4個贊
要求您澄清您的問題(?。N視M力解釋您實際要問的內容。我很想簡單地刪除這個答案。它可能有用也可能沒有用!
如果你偽造“FETCH REQUEST”是什么,使用一種async在它啟動時簡單地打印到控制臺的方法,就在它(異步)解析之前,你可以很清楚地看到它會在p1開始之前完成p2。運行它幾次可以確認這是對p1和p2不交錯的調用。
async function foo() {
return {
p1: await randomAsyncMethod("p1"),
p2: await randomAsyncMethod("p2")
}
}
async function randomAsyncMethod(which){
console.log("starting",which);
return new Promise( resolve =>
setTimeout( () => {
console.log("resolving",which);
resolve();
}, Math.random() * 1000)
);
}
foo();
現在將其更改為第二個示例,您可以看到行為基本相同。
async function foo() {
var p1 = await randomAsyncMethod("p1");
var p2 = await randomAsyncMethod("p2");
return {
p1,
p2
}
}
async function randomAsyncMethod(which){
console.log("starting",which);
return new Promise( resolve =>
setTimeout( () => {
console.log("resolving",which);
resolve();
}, Math.random() * 1000)
);
}
foo();
至于你的對象會包含什么fetch方法的返回值是:
解析為Response對象的 Promise 。
TA貢獻1818條經驗 獲得超11個贊
查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
Promise 是創建 Promise 時不一定知道的值的代理。它允許您將處理程序與異步操作的最終成功值或失敗原因相關聯。這讓異步方法像同步方法一樣返回值:異步方法不是立即返回最終值,而是返回一個在未來某個時間點提供值的承諾。
p1 和 p2 在兩個示例中都返回一個承諾。
添加回答
舉報
