【发布时间】:2021-04-02 15:29:09
【问题描述】:
我陷入Javascript 中的异步编程。 我知道Promise.all() 会并行运行。
你能告诉我下面这段代码有什么问题吗?
应该是100ms。但实际上,它需要200ms :(
// 1. Define function here
var getFruit = async (name) => {
const fruits = {
pineapple: ":pineapple:",
peach: ":peach:",
strawberry: ":strawberry:"
};
await fetch('https://jsonplaceholder.typicode.com/photos'); // abount 100ms
return fruits[name];
};
var makeSmoothie = async () => {
const a = getFruit('pineapple');
const b = getFruit('strawberry');
const smoothie = await Promise.all([a, b]);
return smoothie;
//return [a, b];
};
/// 2. Execute code here
var tick = Date.now();
var log = (v) => console.log(`${v} \n Elapsed: ${Date.now() - tick}`);
makeSmoothie().then(log);
【问题讨论】:
-
api 返回照片列表,您正在尝试获取水果.. 它们有什么关系?
-
@TangentiallyPerpendicular 不,
getFruit中的 await 不会阻塞Promise.all正在调用的并行getFruit调用。 -
@Nilesh Patel 我只需要一些承诺来检测
Promise.all是否工作正常。特别是我对getFruit()方法的错误。
标签: javascript promise async-await es6-promise asynccallback