Angular 如何在ngOnChanges中处理异步

Angular 如何在ngOnChanges中处理异步,angular,Angular,我遇到了这个问题,我不知道如何处理async方法,因为ngOnChanges不支持async 你们是怎么做到的 当我将async应用于ngOnChanges时,它不起作用。返回值为Promise @Component({ moduleId: module.id, selector: 'search', templateUrl: 'search.template.html' }) export class Search implments OnChanges { async que

我遇到了这个问题,我不知道如何处理
async
方法,因为
ngOnChanges
不支持
async

你们是怎么做到的

当我将
async
应用于
ngOnChanges
时,它不起作用。返回值为
Promise

@Component({
  moduleId: module.id,
  selector: 'search',
  templateUrl: 'search.template.html'
})
export class Search implments OnChanges {
  async queryArray(data: string): Promise<T> {
     //sample scripts.
     return ....;
  }
  ngOnChanges(changes: SimpleChanges) {
     let query: string = "red";
     let result: string[] = [];

     await this.queryArray(query).then(resp => result = resp);
  }
@组件({
moduleId:module.id,
选择器:“搜索”,
templateUrl:'search.template.html'
})
导出类搜索在更改时执行{
异步queryArray(数据:字符串):承诺{
//示例脚本。
返回。。。。;
}
ngOnChanges(更改:SimpleChanges){
let query:string=“red”;
let结果:字符串[]=[];
等待这个。queryaray(query)。然后(resp=>result=resp);
}
}

  • 将该方法标记为
    async
  • 添加
    wait
    以等待
    承诺的结果
  • 删除
    ,然后
    ,因为现在您可以在添加
    wait
  • 直接分配结果
代码:


还请注意,
queryArray
不需要标记为
async
,除非您也希望在该方法中等待结果以便进一步处理。如果它所做的只是创建并返回一个承诺,那么它就没有必要了。

能否将响应存储在components范围而不是ngOnChanges范围内?等待this.queryarray(query)。然后(resp=>this.result=resp);哇!这比我想象的要简单得多。似乎我需要更多的实践Javascript承诺,因为我是从JQuery背景下来的。谢谢你,伙计!
async ngOnChanges(changes: SimpleChanges) {
   let query: string = "red";
   let result: string[] = [];

   result = await this.queryArray(query);
}