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);
}