我猜测有一种不同的方法来构建我的代码,但这是我目前正在尝试的方法。
' 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...
}
}
答案 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}))