如何解决rxjs中返回对象内的promise

时间:2015-11-05 03:13:47

标签: promise rxjs

我猜测有一种不同的方法来构建我的代码,但这是我目前正在尝试的方法。

' lastSavedPostDate'返回一个承诺。

我如何获得' lastSavedPostDate'在下一次操作之前解析为某个值?



var source = Observable.fromPromise(facebookPages)
              .concatMap(page => page)
              .map(page => ({ rid: getRid(page), pageId: page.id }))
              .map(obj => {
                  return {
                    rid: obj.rid,
                    id: obj.pageId,
                    lastDate: lastSavedPostDate(obj.rid)
                  }
                })




如果我控制台记录我的结果,我会收到这样的回复。

{ rid: '#13:0', pageId: '18862642', lastSavedPostDate: Promise { _bitField: 131072, _fulfillmentHandler0: undefined, _rejectionHandler0: undefined, _progressHandler0: undefined, _promise0: undefined, _receiver0: undefined, _settledValue: undefined, etc... } }

1 个答案:

答案 0 :(得分:1)

而不是

var source = Observable.fromPromise(facebookPages)
      .concatMap(page => page)
      .map(page => ({ rid: getRid(page), pageId: page.id }))
      .map(obj => {
          return {
            rid: obj.rid,
            id: obj.pageId,
            lastDate: lastSavedPostDate(obj.rid)
          }
        })

你应该使用

  var source = Observable.fromPromise(facebookPages)
          .concatMap(page => page)
          .map(page => ({ rid: getRid(page), pageId: page.id }))
          .flatMap(obj => lastSavedPostDate(obj.rid), (obj, p) => ({rid: obj.rid, id: obj.pageId, lastDate: p}))