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