【问题标题】:How to emit only resolved value with Rxjs 5 mergeAll operator如何使用 Rxjs 5 mergeAll 运算符仅发出已解析的值
【发布时间】:2017-01-03 12:29:36
【问题描述】:

如何使用 mergeAll 运算符仅发出已解决的承诺。

var s1 = Rx.Observable.from([1,3,2])
var s2 = Rx.Observable.from([4,5,6])
var samplePromise = val => new Promise((resolve,reject)=>{    
setTimeout(()=> {if(val==3) reject(new Error(val)); else resolve(val);},val*1000)});

var mergedSource= Rx.Observable.merge(s1,s2)
  .map(val => samplePromise(val))        
  .mergeAll()
  .catch(err=>console.log('err' , err)) 
var subscribeTwo = mergedSource.subscribe(val => console.log('Example:', val));

在这个例子中,当 val=3 抛出错误并且不发出其他错误。 如何跳过被拒绝的承诺,我只想发出已解决的承诺值。

【问题讨论】:

    标签: javascript rxjs5


    【解决方案1】:

    没有 mergeAll 运算符的正确答案。

    var s1 = Rx.Observable.from([1,3,2])
    var s2 = Rx.Observable.from([4,5,6])
    var samplePromise = val => new Promise((resolve,reject)=>{
    setTimeout(()=> {if(val!=3) resolve(val);  else reject('hata') },val*1000)
    } );
    var exampleTwo = Rx.Observable.merge(s1,s2)
      .flatMap(val => Rx.Observable.fromPromise(samplePromise(val)).catch(err=>Rx.Observable.empty()))
    
    
    var subscribeTwo = exampleTwo.subscribe(val => console.log('Exampl:', val),err=>console.log("onError" ,err),()=>console.log('completed'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-18
      • 2021-01-16
      • 2019-04-16
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      相关资源
      最近更新 更多