在angular2中同步嵌套订阅

时间:2016-08-02 07:56:57

标签: typescript angular

我有以下代码记录:"foo1"然后a() { b().then(() => { console.log("foo2") }) } b() { return webServiceCall().do(() => { webServiceCall2().subscribe(() => { console.log("foo1") }) }) }

foo1

我想确保我的foo2出现在{{1}}之前。

我该如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:1)

如果您使用链式承诺,则可以确保foo1出现在foo2之前。

如果webServiceCall1webServiceCall2的顺序很重要:

b() {
    return webServiceCall1().then(() => {
        return webServiceCall2().then(() => {
            console.log("foo1")
        })
    })
}

如果webServiceCall1webServiceCall2的顺序无关紧要,请使用Observable.forkJoin

b() {
    return Observable.forkJoin(webServiceCall1,webServiceCall2).toPromise().then(() => {
        console.log("foo1"); 
    });
}