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's
和 subscribe
来传递这两个函数,等待它们完成。
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;
});
}
我有两个功能:
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's
和 subscribe
来传递这两个函数,等待它们完成。
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;
});
}