在RxJS中实现第一个承诺

在RxJS中实现第一个承诺,rxjs,rxjs6,Rxjs,Rxjs6,与RxJS类似,但在RxJS中 如果我有两个承诺A和B,其中只有一个会成功,我怎么能得到其中一个成功实现?一些承诺也会遭到拒绝。只需要成功的承诺 我正在寻找类似于Promise.race的东西,但它只会返回第一个实现的承诺。我使用的是RxJS6的承诺。RxJS还具有: RxJS还具有: 它是否只将成功的承诺视为赢家,而不是被拒绝的承诺?不,它的工作原理与蓝鸟的承诺一样。一旦任何承诺(或可观察到的)得到解决或拒绝,该结果将传递给您的订阅者,其他结果将被忽略。@user1595858如果您只需要成功

与RxJS类似,但在RxJS中

如果我有两个承诺A和B,其中只有一个会成功,我怎么能得到其中一个成功实现?一些承诺也会遭到拒绝。只需要成功的承诺

我正在寻找类似于Promise.race的东西,但它只会返回第一个实现的承诺。我使用的是RxJS6的承诺。

RxJS还具有:

RxJS还具有:


它是否只将成功的承诺视为赢家,而不是被拒绝的承诺?不,它的工作原理与蓝鸟的承诺一样。一旦任何承诺(或可观察到的)得到解决或拒绝,该结果将传递给您的订阅者,其他结果将被忽略。@user1595858如果您只需要成功的结果--将抑制每个源错误的管道a,例如:
race(a$.pipe(catchError(()=>NEVER)),b$.pipe(catchError(()=>NEVER)))
。虽然需要一个更复杂的解决方案来处理所有来源都失败的情况。它是否只将成功的承诺视为赢家,而不将被拒绝的承诺视为赢家?不。它的工作原理就像蓝鸟的承诺。一旦任何承诺(或可观察到的)得到解决或拒绝,该结果将传递给您的订阅者,其他结果将被忽略。@user1595858如果您只需要成功的结果--将抑制每个源错误的管道a,例如:
race(a$.pipe(catchError(()=>NEVER)),b$.pipe(catchError(()=>NEVER)))
。虽然需要一个更复杂的解决方案来处理所有源失败的情况。“我使用的是RxJS6的承诺”-你的意思是你有可观察的吗?或者你把承诺包装成可观察的东西?“我使用的是RxJS6的承诺”-你是说你有可观察的东西吗?或者你把承诺包装成可观察的东西?
import {race} from 'rxjs'

race(promiseA, promiseB).subscribe(result => console.log('winner is ' + result))