javascript - 等待函数,但让它们同步,然后调用最后一个函数
问题描述
所以我正在使用 Vue、Node 和 typescript。我正在获取我所有其他功能都需要的数据,因此getDataForFunction123()
需要等待并且很好。
然后我有 3 个函数可以获取不同的东西,而不是相互依赖。但是所有答案都由最后一个函数使用updateAfterFunction123IsDone()
。但是当我现在拥有它时,我们需要等待函数 1、2 和 3 的同步。这需要很多时间。我想让功能 1、2 和 3 同时做一些事情,但也想知道所有 3 什么时候完成,然后调用updateAfterFunction123IsDone()
.
这是代码:
async initData () {
await this.getDataForFunction123();
await this.function1();
await this.function2();
await this.function3();
this.updateAfterFunction123IsDone();
}
我认为Promise.all()
不会解决这个问题?因为它也是按顺序而不是同时执行功能?正确的?这不会节省我的时间,但会节省一些错误处理?
解决方案
Promise.all
一旦它的所有承诺都得到解决,就会触发。因此,立即运行所有函数function1
, , ,然后在它们的承诺得到解决后继续:function2
function3
await
async initData () {
await this.getDataForFunction123();
const p1 = this.function1();
const p2 = this.function2();
const p3 = this.function3();
await Promise.all([p1, p2, p3]);
this.updateAfterFunction123IsDone();
}
推荐阅读
- sql - 在 Windows 7 中安装 SQL Express 2017
- multithreading - c++/cli 中的线程
- c# - C# Rx DistinctUntilChanged() 用于任何结果,包括列表
- php - PHP 7 发送响应后继续执行
- mysql - vb6 连接到 mysql :[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序
- apache-kafka - kafka 主题有两个 avro 类
- php - 错误:在 Drupal 8 中调用 null 上的成员函数 uuid()
- python - Python/selenium:我怎么可能从不同的页面得到相同的项目?page_source 有什么问题?
- swift - 从数据库中获取所有孩子
- c# - 从 Azure 中的 Web 应用程序到本地计算机的 TcpClient 连接