【问题标题】:RXJS5 chaining like PromisesRXJS5 像 Promises 一样链接
【发布时间】:2016-11-30 06:42:49
【问题描述】:

大家好, 链接 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 props...

【问题讨论】:

    标签: javascript typescript rxjs rxjs5


    【解决方案1】:

    通过 Promises 和链接 then() 调用,您可以修改传递给连续处理程序的结果。

    RxJS 中最相似的选项是 map() 运算符或 concatMap() 如果你想返回另一个 Observable。在某些情况下,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 发出值。

    【讨论】:

      猜你喜欢
      • 2021-10-19
      • 1970-01-01
      • 2018-11-07
      • 2010-10-03
      • 2010-11-30
      • 2019-09-28
      • 2014-12-13
      • 1970-01-01
      相关资源
      最近更新 更多