同步嵌套订阅在angular2
问题描述:
我有以下代码记录:"foo2"
然后"foo1"
:同步嵌套订阅在angular2
a() {
b().then(() => {
console.log("foo2")
})
}
b() {
return webServiceCall().do(() => {
webServiceCall2().subscribe(() => {
console.log("foo1")
})
})
}
我想确保我的foo1
我foo2
之前出现。
我该如何解决这个问题?谢谢 !
答
如果您使用链接的承诺,您可以确定foo1
出现在foo2
之前。
如果webServiceCall1
和webServiceCall2
事项的顺序:
b() {
return webServiceCall1().then(() => {
return webServiceCall2().then(() => {
console.log("foo1")
})
})
}
如果webServiceCall1
和webServiceCall2
的顺序并不重要,使用Observable.forkJoin:
b() {
return Observable.forkJoin(webServiceCall1,webServiceCall2).toPromise().then(() => {
console.log("foo1");
});
}
比方说,我有webServiceCall3也存在在我的webServiceCall1(在webServiceCall2之后被调用),那么我必须以相同的方式在webServiceCall2中移动它?这实际上会使一切顺序。 – Scipion
看看我的编辑 – Christoph
辉煌,但是forkJoin可以使用两个以上的参数吗?就像我有一个webServiceCall3一样,我可以做forkJoin(wSC1,wSC2,wSC3)吗? – Scipion