javascript - 在 Rx.Observable 中一次执行一个 Promise

标签 javascript rxjs observable reactive-programming

我希望 console.log 打印 0 到 9,并且在每一步只计算一个惰性 promise 。

Rx.Observable.range(0,10)
   .map((i)=>new Promise((res,rej)=>setTimeout(()=>res(i),Math.random()*100)))
   .subscribe(console.log,console.error)

此代码导致记录 promise ,并且所有 promise 同时开始......

最佳答案

使用concatMap 运算符代替map,它允许您一个接一个地串行投影源可观察

Rx.Observable.range(0,10)
    .concatMap((i)=>new Promise((res,rej)=>setTimeout(()=>res(i),Math.random()*100)))
    .subscribe(console.log,console.error)

关于javascript - 在 Rx.Observable 中一次执行一个 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53469769/

相关文章:

javascript - 带有淡入和淡出的 map 信息

angular - 没有可观察对象的服务

Flutter GETX -variable.value = newValue 和variable(newValue) 之间有什么区别?

javascript - 开发中的 Rails 4 Long Coffeescript 编译时间

javascript - 如何在单击 div 而不是标签时获取 div 内标签的类列表?

javascript - 在 Fullcalendar 中拖动时如何链接两个事件?

angular - 错误 TS2339 : Property 'scan' does not exist on type 'Observable<Message[]>'

rxjs - 如何使轮询可观察到检测未兑现的 promise

类型 'url' 上不存在 Angular 属性 'ActivationEnd'

object - Kendo UI - observable、ObservableObject 和 Model 之间的区别