首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使嵌套循环仅在异步函数解析后才继续,或者如何将".then“扩展到作用域之外

如何使嵌套循环仅在异步函数解析后才继续,或者如何将".then“扩展到作用域之外
EN

Stack Overflow用户
提问于 2019-04-23 01:28:58
回答 3查看 223关注 0票数 2

在下面的代码中,我试图防止promises出现异步问题。通过使用.then函数,该函数中的所有内容都会在函数解析后被调用。但现在我遇到了一个问题:我既不能将".then函数“的范围扩展到足以包含第二个循环之后的位,也不能根据我的知识轻松地暂停代码,直到函数被正确解析,然后继续循环迭代。

以下是我的主要代码(简化):

代码语言:javascript
复制
let total = []
$.each(element, function(data) {
  //Some other code
  let out;
  $.each(element2, function(data2) {
    getZip(data2).then(function(txt){ //after everything has finished this get's called
      out = someFunction(txt,data2);
      total.push(out);
    });

  )};
   console.log(total)//this gets called first 
  //some other code that does some stuff with total
)};

下面是异步的getZip代码:

代码语言:javascript
复制
        function getZip(zipFile) {
            return new Promise(function (resolve, reject){
                zip = new JSZip()
                JSZipUtils.getBinaryContent("someURL/" + zipFile, function (err, data) {
                    if (err) {
                        reject(err)
                    }
                    JSZip.loadAsync(data).then(function (zip) {
                        return zip.file(zipFile.replace(".zip", "")).async("text"); //gets the file within the zip andoutputs as text
                    }).then(function (txt) {
                        resolve(txt)
                    });

                });
            });
        }

如果getZip代码可以同步,或者前面提到的都可以完成,我会很高兴。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55798396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档