在运行下一个代码之前,如何等待异步JSZip .forEach()调用完成?

普拉纳夫

我有一个名为“数据”的全局变量,正在forEach循环内进行修改。但是,由于循环是异步的,因此代码不会等到填充数据后再继续执行代码。这是使用JSZip库。

let data = [];

await zip.folder("folderName").forEach(async function (relativePath, file) {
            let json = await zip.file(file.name).async("text");
            data.push(json);
            console.log(data.length); // prints increasing numbers
        });

console.log(data.length); //prints 0
// need to do something with data but it is empty

在继续执行代码之前,如何等待数据数组填充?

帕特里克·罗伯茨

forEach()没有返回值,因此无法等待。您必须填充每个中的诺言数组,ZipObject#async()await使用Promise.all()来获得结果:

const promises = [];

zip.folder("folderName").forEach(function (relativePath, file) {
  promises.push(zip.file(file.name).async("text"));
});

Promise.all(promises).then(function (data) {
  // do something with data
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

提交表单之前,请等待异步调用完成

如何等待更新完成才能移至下一个项目?

等待AngularJs Ajax调用完成

开玩笑:在运行下一个测试之前,请等待异步测试完成

在React渲染之前等待多个异步调用完成

在继续下一个之前,如何等待ajax调用完成?

无法等待多个AJAX调用完成

如何异步调用方法并等待API调用完成

如何等待Javascript forEach循环完成后再继续进行下一个Sep

在执行下一个操作之前,如何等待请求完成(Xcode 11)

React Redux-等待异步api调用完成,然后分派下一个操作

如何在嵌套的foreach中继续操作之前确保所有异步调用完成

如何等待大量任意数量的深度嵌套异步jQuery ajax调用完成

在ajax调用完成之前执行方法

等待jQuery AJAX调用完成

等待多个异步调用完成?

如何等待截击响应完成然后执行下一个方法

如何调用完成块?

在调用下一个函数之前,如何等待一个函数完成?

等待异步函数调用完成

NODE-等待一个API调用完成后再触发下一个API调用

等待多个(异步)API 调用完成

如何等待 API 调用完成然后返回结果?

在运行视图控制器 (Swift) 的“覆盖”功能之前等待异步调用完成

在 Angular 的循环中运行下一个服务之前,如何等待对我的控制器的每个服务调用?

iOS - 如何在转到下一个视图控制器之前等待代码完成?

在继续下一个动画之前,我如何等待此动画完成?

我如何等待数据库调用完成

在执行下一个代码之前等待 forkjoin 完成