2 回答
TA贡献2080条经验 获得超4个赞
要求您澄清您的问题(!)。我会尽力解释您实际要问的内容。我很想简单地删除这个答案。它可能有用也可能没有用!
如果你伪造“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 在两个示例中都返回一个承诺。
添加回答
举报