如何解决在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}))
你能解释一下我这个功能'的obj => lastSavedPostDate(obj.rid),(OBJ,P)= >({rid:obj.rid,id:obj.pageId,lastDate:p})'请吗? – giankotarola