2017-06-22 12 views
1

ngOnChangesasyncをサポートしていないため、この問題が発生しましたが、asyncメソッドの処理方法はわかりません。ngOnChangesで非同期を処理する方法

これを行うにはどうすればよいですか?

asyncngOnChangesに適用すると機能しません。戻り値は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); 
    } 

}

+0

ngOnChangesスコープの代わりにcomponentsスコープにレスポンスを保存できますか? this.queryArrray(query).then(resp => this.result = resp);これを待つ。 – LLai

答えて

1
  • マーク方法async
  • のように、今あなたが追加したら、あなたは結果を直接割り当てることができますthenを削除Promise
  • の結果を待つawaitを追加await
  • 結果を直接割り当てます。

コード:

async ngOnChanges(changes: SimpleChanges) { 
    let query: string = "red"; 
    let result: string[] = []; 

    result = await this.queryArray(query); 
} 

はまた、あなたはまた、さらなる処理のためにその方法では結果を待つ場合を除きqueryArrayasyncとしてマークする必要はないことに注意してください。プロミスを作成して返すだけであれば、それは必要ではありません。

+0

うわー!それは私が思ったよりもずっと簡単です。私がJQueryのバックグラウンドから離れるにつれて、Javascript Promiseでさらに多くの練習が必要なようです。ありがとう! – fletchsod

関連する問題