【问题标题】:RxJS use response only from last promiseRxJS 仅使用来自最后一个承诺的响应
【发布时间】:2015-12-26 21:03:17
【问题描述】:
我怎样才能只使用最后创建的承诺,取消(或不使用)所有先前的承诺?
该函数可以无限次运行。
rx.Observable.fromPromise(listingFactory.list())
.flatMapLatest((e: any) => {
return e;
})
.subscribe((e: any) => {
console.log(e);
});
【问题讨论】:
标签:
javascript
promise
rxjs
【解决方案1】:
如果你的 listingFactory.list() 返回一个可观察的承诺,那么你可以这样写:
listingFactory.list()
.flatMapLatest((promise: any) => {
return promise;
})
.subscribe((resolved_value: any) => {
console.log(resolved_value);
}, (error: any) => {
console.log(error)});
flatMapLatest 将等待最新发出的 Promise 解决,丢弃之前的 Promise。请注意,这些承诺不能被“取消”,但它们的解决值(或拒绝)将被忽略。另请注意,flatMapLatest 允许您返回可观察的、承诺的或可迭代的。在这种特殊情况下,我们可以直接返回 Promise,而无需使用 .fromPromise 运算符。此外,fromPromise 运算符只需要一个 Promise 作为参数,而不是它们的列表。
那么listingFactory.list() 的类型是什么?你如何创建你的承诺来源?我误解你的意图了吗?