【发布时间】:2020-05-22 08:28:01
【问题描述】:
我正在尝试并行运行两个不相互依赖的异步操作,但我似乎无法让它工作。
const activity = fetchActivity(...)
const progress = fetchProgress(...)
await activity
await progress
当我打印activity 和progress 的属性时,它们都是未定义的。
当我这样运行它时,属性会显示出来。
const activity = await fetchActivity(...)
const progress = await fetchProgress(...)
我在想某种并行方法awaits 没有正确等待,因为当我将对象记录到控制台时,它们最终会显示出来,但直接记录属性不起作用。
更新:
显然我无法回答我自己的问题,因为它已关闭,但首先要感谢那些将我引导到正确答案的人,尽管没有回答我的问题。
虽然下面给出了我的问题的实际解决方案,但这里给出了不使用此方法的原因:Waiting for more than one concurrent await operation,而我应该追求已经在各处提到的解决方案。
回答:
awaits 的值没有存储在变量中,所以以后直接访问它是行不通的。
const activity = fetchActivity(...)
const progress = fetchProgress(...)
const activityData = await activity
const progressData = await progress
【问题讨论】:
-
这能回答你的问题吗? Call async/await functions in parallel
-
@GrafiCode 那是别的东西
-
@ZohaibIjaz 那是什么?
-
这是网上各种文章都建议的方法:我找不到好的atm,但是这篇freecodecamp.org/news/…提到了一点。
ctrl+f“等待披萨承诺” -
@GrafiCode 我认为这会奏效,但这种方法有什么问题?如果 fetchProgress 花了 20 年,我想在
await activity和await progress之间运行一些操作,该怎么办?
标签: javascript asynchronous async-await