如何解决在rxjs中的返回对象内的承诺

问题描述:

我猜测,有不同的方式来构建我的代码,但这里是我目前正在尝试的。如何解决在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) 
 
        } 
 
       })

如果我控制台日志我的结果,我得到的东西回来这样的。取而代之的

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... } }

你应该使用

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})) 
+0

你能解释一下我这个功能'的obj => lastSavedPostDate(obj.rid),(OBJ,P)= >({rid:obj.rid,id:obj.pageId,lastDate:p})'请吗? – giankotarola