在下面的代码中,我试图防止promises出现异步问题。通过使用.then函数,该函数中的所有内容都会在函数解析后被调用。但现在我遇到了一个问题:我既不能将".then函数“的范围扩展到足以包含第二个循环之后的位,也不能根据我的知识轻松地暂停代码,直到函数被正确解析,然后继续循环迭代。
以下是我的主要代码(简化):
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代码:
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代码可以同步,或者前面提到的都可以完成,我会很高兴。
https://stackoverflow.com/questions/55798396
复制相似问题