【发布时间】:2022-12-09 02:03:08
【问题描述】:
假设我有三个功能:
异步函数 - asyncF() - 例如,它调用 REST API。
同步功能sync()
执行器函数 exec() 会尽快调用它们,最好是并行调用。
我希望使用“Async-await”语法编写exec(),而不使用“Callbacks”或“Promises”语法。
把它写成:
async exec(){
const [res1, res2]= await Promise.all([asyncF(), sync()])
...
}
有没有更好的办法?
【问题讨论】:
-
JavaScript 只在一个线程中工作,所以没有什么是真正并行的。但是
Promise.all这里应该没问题 -
这是没有意义的。它只是添加了额外的语法而没有任何加速。事实上,它可能有点慢,因为你必须分配和 GC 额外的数组,加上来自
Promise.all的开销。只需在不同的行上运行同步代码和异步代码,这将实现代码可能实现的所有并行性。 -
@ggorlen 不是真的,
Promise.all遍历参数所以它就像一个映射循环但更短 -
@Konrad 我不知道你的意思。在同步功能上使用
Promise.all()是如何实现的?
标签: javascript asynchronous async-await