如何在 rxjs 中解决 return 对象内的承诺
How to resolve a promise inside a return object in rxjs
我猜有一种不同的方法可以为此构造我的代码,但这是我目前正在尝试的方法。
'lastSavedPostDate'returns一个承诺。
如何让 '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...
}
}
而不是
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}))
我猜有一种不同的方法可以为此构造我的代码,但这是我目前正在尝试的方法。
'lastSavedPostDate'returns一个承诺。
如何让 '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...
}
}
而不是
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}))