我怎样才能使用最后创建的承诺,取消(或不使用)所有先前的承诺?
该功能可以无限次运行。
rx.Observable.fromPromise(listingFactory.list())
.flatMapLatest((e: any) => {
return e;
})
.subscribe((e: any) => {
console.log(e);
});
答案 0 :(得分:1)
如果你的listingFactory.list()
返回一个可观察的承诺,那么你可以写:
listingFactory.list()
.flatMapLatest((promise: any) => {
return promise;
})
.subscribe((resolved_value: any) => {
console.log(resolved_value);
}, (error: any) => {
console.log(error)});
flatMapLatest
将等待最新发出的承诺解决,放弃之前的承诺。请注意,这些承诺不能被取消,但是它们的已解决的值(或拒绝)将被忽略。另请注意,flatMapLatest
允许您返回可观察,承诺或可迭代。在那种特殊情况下,我们可以直接返回承诺,而无需使用.fromPromise
运算符。此外,fromPromise
运算符只需要一个promise作为参数,而不是它们的列表。
那么listingFactory.list()
的类型是什么?你如何创造你的承诺来源?我误解了你的意图吗?