Hy all, 什么是最好的方式来链接RXJS5结果,就像承诺一样?
interface MyObj{
name : string
url: string
html: any // async
}
// promise chaining, pretty simple
getMyObjWithPromise()
.then(myObj=>{
// promise, we get back html from myObj.url async
return getMyObjHtmlWithPromise(myObj)
})
.then(myObj=>{
// done, here we have myObj with html
})
与RXJS5类似? 我们需要跨流共享myObj,并异步修改obj道具......
答案 0 :(得分:3)
使用Promise和链接then()
调用,您可以修改传递给连续处理程序的结果。
如果要返回另一个Observable,RxJS中的大多数类似选项是map()
运算符或concatMap()
。在某些情况下,do
也可能有用,但无法修改传递的值。
Rx.Observable.fromPromise(getMyObjWithPromise())
.map(myObj => {
return myObj;
})
.concatMap(myObj => {
// promise, we get back html from myObj.url async
return Rx.Observable.fromPromise(getMyObjHtmlWithPromise(myObj));
})
.subscribe(myObj => {
// done, here we have myObj with html
});
请注意,通常您需要至少有一个订阅者才能使Observable发出值。