Ionic 2 / Angular 2 中的承诺,如何



我有两个函数:

this.geQuizStorage();
this.getQuizData();
geQuizStorage() {
    this.quizStorage.getAnswers().then(data => {
        return data;
    });
}
getQuizData() {
    this.quizData.getQuiz().then(data => {
        return data;
    });
}

我正在尝试对 2 个函数使用 promise 并等到两者都完成,如下所示:

http.when(this.geQuizStorage(), this.getQuizData()).when(data => {
    // data[0] first function response
    // data[1]
})

如何在离子2/角度2中做到这一点的任何想法

你可以

用ES6 promise的all函数来做到这一点。无需外部库。

Promise.all([this.geQuizStorage(), this.getQuizData()]).then(data => {
  //do stuff with data[0], data[1]
});

您的函数应该返回 promise 才能使其正常工作,因此我建议进行以下修改:

geQuizStorage() {
    return this.quizStorage.getAnswers().then(data => {
        return data;
    });
}
getQuizData() {
    return this.quizData.getQuiz().then(data => {
        return data;
    });
}

基本上,您不需要为服务调用创建另一个包装器函数,只需返回数据(除非您有验证逻辑来验证数据(。然后通过传递方法promises/observable'ssubscribeObservable.forkJoin中传递这两个函数,以等待它们完成。

 Observable.forkJoin([this.getQuizData(),this.geQuizStorage()])
  .subscribe(data => {
     console.log(data[0], data[1]);
     //both call succeeded
});

相关内容

  • 没有找到相关文章

最新更新