相关疑难解决方法(0)

在列表上异步操作时保留结果的顺序

我有一个处理来自列表的请求的异步函数,但是当每个请求完成时,它的排序不像之前声明的那样(因为它是异步的)。如何异步获取但保留原始顺序?

这是小提琴http://jsbin.com/papunixume/edit?html,js,console

// clear console every single run
console.clear()

// create promise
const cp = (msg, timeout) => {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(msg)
    }, timeout)
  })
}

const a = cp('a', 1000)
const b = cp('b', 500)
const c = cp('c', 800)

Rx.Observable.of([a, b, c]).subscribe(val => {
  val.map(res => {
    res.then(x => console.log(x))
  })
})
Run Code Online (Sandbox Code Playgroud)

结果是

"b"
"c"
"a"
Run Code Online (Sandbox Code Playgroud)

预期的

"a"
"b"
"c"
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous rxjs

4
推荐指数
1
解决办法
1527
查看次数

标签 统计

asynchronous ×1

javascript ×1

rxjs ×1