You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 1中Promise.all转async-await的替代实现方案咨询

使用 async/await 重构你的 $onInit 方法

没问题!用async/await重构这段代码会让逻辑更直观,代码可读性也更强,完全可以替代原来的Promise.all写法。这里是重构后的实现:

async $onInit() {
  // 同时发起两个请求,等待两者都完成
  const [references, contactTypes] = await Promise.all([
    this.ReferenceService.getMultipleReferences(this.AgentReferences),
    this.ContactService.getContactTypes()
  ]);

  // 把结果赋值给实例属性
  this.references = references;
  this.contactTypes = contactTypes;

  // 原代码里的stateParams可以直接取用
  const stateParams = this.$state.params;
  
  // 如果setContactSteps是异步方法(返回Promise),记得加上await保证执行顺序
  await this.setContactSteps();
}

关键点说明:

  • 给$onInit添加async关键字,这样就能在方法内部使用await语法
  • 用await Promise.all(...)等待两个并行请求完成,同时通过数组解构直接把返回结果赋值给变量,比原代码里用responses[0]、responses[1]的写法更清晰直观
  • 如果setContactSteps()方法本身是异步的(返回Promise),一定要加上await,确保它执行完成后再继续后续流程(和原代码里的return逻辑保持一致)

这样重构后的代码和原逻辑完全等价,但写法更简洁易懂,也符合现代异步代码的风格。

内容的提问来源于stack exchange,提问作者Mouad Ennaciri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:36:29