Ionic 2 中的 Promises / Angular 2,如何?

Promises in Ionic 2 / Angular 2, how to?

我有两个功能:

this.geQuizStorage();
this.getQuizData();

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

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

我正在尝试对这两个函数使用 promises 并等待两者都完成,例如:

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

关于如何在 Ionic 2 中执行此操作的任何想法/Angular 2

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

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

您可以使用 ES6 promise 的 all 函数来做到这一点。不需要外部库。

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

您的函数应该 return promises 才能正常工作,因此我建议进行以下修改:

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

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