【发布时间】:2022-01-06 02:51:13
【问题描述】:
我只是想知道await Promise.all([/* ... /*]) 的这两个电话之间是否有不同
在我的性能测试中,用了同样的时间。
这是我要被 Promise.all 调用的方法:
const makeFetch1 = async () => {
axios.get("https://jsonplaceholder.typicode.com/todos/1");
};
const makeFetch2 = async () => {
return axios.get("https://jsonplaceholder.typicode.com/todos/1");
};
1) await Promise.all([makeFetch1(), makeFetch1(), ...])
2) await Promise.all([makeFetch2(), makeFetch2(), ...])
两者的执行时间结果相同,我应该选择什么?
【问题讨论】:
-
请注意,第一个箭头函数不会返回任何超出异步包装承诺的内容。只有单语句箭头函数返回数据,当你在大括号内有一个函数体时,你需要一个
return关键字。 -
如果你在异步函数中没有
return任何东西,它会返回一个带有undefined值的承诺。 -
第一个使用
Promise.all()是没有意义的,因为它根本没有监控任何承诺。当fetch()操作继续运行并最终完成时,它将立即解决。第二个跟踪 Promise 和 resolve,当它们同时解析并使用它们的值解析时。 -
我要补充一点,
[makeFetch1, ...]、[makeFetch2, ...]不会调用makeFetch*函数。你需要写Promise.all([makeFetch2(), ...]) -
如果您问
(...) => { ... }和(...) => ...之间的性能差异是什么,请测量一下。 stackoverflow 不适合这类问题。
标签: javascript promise nodes