gpt4 book ai didi

javascript - 列表 : Observable on array map

转载 作者:行者123 更新时间:2023-12-03 02:51:50 26 4
gpt4 key购买 nike

我想下载一组文件并使用 Listr 报告进度和 RxJs但是当我运行它时,它会循环并显示不正确的数组索引。

这是任务的代码 [source code] :

{
title: 'Downloading...',
task: (ctx) => rx.Observable.create((observer) => {
const count = ctx.photos.length;
const urls = ctx.photos.map((photo) => photo.urls.raw)
urls.forEach(async (url, index) => {
let data = await download(url);
if ( index !== count - 1 ) {
observer.next(index);
} else {
observer.complete()
}
})
})
}

这就是结果(不是完全相同的函数,但问题是相同的)

result

最佳答案

.forEach 将同步运行,即使其回调使用 async/await 也是如此。老实说,我认为这是一种更好的方法,因为它允许同时进行多个下载,并且您不必依赖下载的顺序。如果您希望按顺序显示,您可以维护自己的计数器:

let downloadedCount = 0;
urls.forEach(async (url, index) => {
let data = await download(url);
if ( index !== count - 1 ) {
observer.next(++downloadedCount);
} else {
observer.complete()
}
})

关于javascript - 列表 : Observable on array map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47817378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com