javascript - 即使使用了 promise 函数(javascript),for-loop 也会冻结屏幕
问题描述
我已经编写了这个方法,它正在计算 2 个 1000 个数据的数组,这很好,因为对数据无能为力,但随着程序的开始,我的整个屏幕都冻结了。我正在使用 promise 函数来克服这个问题。但即便如此,屏幕仍然冻结。(我也尝试过 forEach 循环,同样的冻结结果)。我需要一些方法来避免冻结问题。
someClickEvent(arrayOfSelectedFile,eventArray){
this.documentCorrection(arrayOfSelectedFile,eventArray)
.then((response)=>{
console.log(response);
})
}
documentCorrection(arrayOfSelectedFile, eventArray) {
let somedata;
let promise = new Promise((resolve, reject) => {
for (let i = 0; i < arrayOfSelectedFile.length; i++) {
for (let j = 0; j < eventArray.length; j++) {
somedata = this.someFunctionGoinOn(arrayOfSelectedFile[i], eventArray[j] );
}
}
resolve(somedata);
});
return promise;
}
请注意,此方法已成功解决。但是在这个for循环过程中,屏幕冻结了。
解决方案
你不应该一一返回promise并处理它。使用Promise.all。我像这样循环管理我的承诺。检查这个。它可能会帮助你。
function awaitAll(count) {
const promises = [];
count = 10;
for (i = 0; i < count; ++i) {
promises.push(asyncFn()); // async operation
}
return Promise.all(promises);
}
推荐阅读
- deep-learning - 如何进行对象定位仅获取边界框细节而不对对象进行分类?
- android - UnsatisfiedLinkError:找不到本机方法:com.pdftron.pdf.PDFNet.setTempPath
- javascript - 如何将表单链接到另一个(Angular)?
- compression - Huffman 如何进一步压缩 Run-Length-Encoded 量化 DCT 系数?
- python - 如何找到三个连续的完美数?
- javascript - 如何将表单用户输入传递给在表单提交上运行的函数并使用用户输入的名称创建 cookie?
- python - 如何在“for”循环中增加特定变量?
- python - AWS::RDS - 使用对流层的多可用区
- python - 将数据从客户端发送到服务器
- java - 为什么使用 OpenCv 未检测到最大轮廓?