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
相关产品推荐
相关产品推荐

