javascript - Promises in Ionic 2Angular 2, how to? - Stack Overflow

admin2025-03-14  2

I have two functions:

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

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

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

I am trying use promises for the 2 functions and wait until both are done, something like:

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

any ideas how to do this in Ionic 2 / Angular 2

I have two functions:

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

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

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

I am trying use promises for the 2 functions and wait until both are done, something like:

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

any ideas how to do this in Ionic 2 / Angular 2

Share Improve this question edited Jul 28, 2016 at 3:09 Patrioticcow asked Jul 27, 2016 at 6:28 PatrioticcowPatrioticcow 27.1k76 gold badges221 silver badges339 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 5

You can do this with ES6 promise's all function. No need for external libraries.

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

Your functions should return promises in order for this to work, so I suggest the following modification:

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

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

Basically you don't need to create another wrapper function for your service call, just to return a data(unless you have your validation logic out there to validate data). Then pass those two function in Observable.forkJoin by passing method promises/observable's & subscribe over that observable to wait till those get plete.

 Observable.forkJoin([this.getQuizData(),this.geQuizStorage()])
  .subscribe(data => {
     console.log(data[0], data[1]);
     //both call succeeded
});
转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1741937324a188682.html

最新回复(0)