gpt4 book ai didi

javascript - 在 Javascript 中等待来自 JQuery $.each 中的异步嵌套函数的数据

转载 作者:行者123 更新时间:2023-11-30 12:05:54 25 4
gpt4 key购买 nike

这是 Asynchron Errorhandling inside $.each 的后续问题.正如那里的评论中提到的,我想在 $.each 循环的最后一个异步作业之后处理数据。

例如:

  var errors = 0;
var started = 0;
var successful = 0;
$.each(..., function(){
started++;
connection.query('INSERT INTO tableName SET ?', post, function(err, result)
{
if (err) {
if (err.code === 'ER_DUP_ENTRY')
{ errors++; }
else
{ throw err; }
} else { successful++;}
if (started == successful + errors) {
// all done
console.log(errors + " errors occurred");
}
});
});

在这种情况下,当到达//all done 评论时,一切都会正确注销。但是,如果我想稍后使用这些数据而不只是将其注销怎么办。

有没有办法在 $.each 范围之外等待这些数据?或者我是否总是必须处理嵌套函数中的所有内容?

最佳答案

您可以改用 promises

var promises = [];

$.each(..., function() {
var promise = new Promise(function(resolve, reject) {;
connection.query('INSERT INTO tableName SET ?', post, function(err, result) {
if (err) {
resolve(err.code);
} else {
resolve(result);
}
});
});
promises.push(promise);
});


var result = Promise.all(promises);

然后当你想使用这些数据时,你就可以

result.then(function(data) {
// use data array looking like ["result data", "result data", "ER_DUP_ENTRY" .. etc]
})

关于javascript - 在 Javascript 中等待来自 JQuery $.each 中的异步嵌套函数的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35248192/

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