Moo*_* Jo 5 javascript asynchronous async-await rxjs typescript
我想使用async/await从rxjs获取一个列表.我该怎么办?
function getData(num){
return new Promise((resolve, reject)=>{
resolve(num + 1)
})
}
async function create(){
var list = await Rx.Observable.range(1, 5).map(async (num)=>{
const data = await getData(num)
return data
}).toArray().toPromise()
return list
}
Rx.Observable.fromPromise(create()).subscribe(list=>{
console.log(list)
}, err=>{
console.log(err)
})
Run Code Online (Sandbox Code Playgroud)
我明白了
[ Promise { 2 },
Promise { 3 },
Promise { 4 },
Promise { 5 },
Promise { 6 } ]
Run Code Online (Sandbox Code Playgroud)
我想得到这样的数据
[2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)
Mel*_*igy 11
这是一个稍微陈旧的问题.你可能已经得到了答案,但我认为这是一个很好的挑战,结果也是一个非常简单的挑战!
只需切换map()到flatMap().
而你甚至不需要映射函数中的async/ awaitbit.虽然保留或删除它似乎对我没有任何改变.
因此,相关位可以简化为:
async function create() {
var list = await Rx.Observable.range(1, 5)
.flatMap(num => getData(num))
.toArray().toPromise();
return list;
}
Run Code Online (Sandbox Code Playgroud)
而且,你可以完全按照你在问题中的方式保留它,然后map改为flatMap.我只是想知道这可以走多远
检查页面底部的控制台以获取结果.
| 归档时间: |
|
| 查看次数: |
4989 次 |
| 最近记录: |