gpt4 book ai didi

javascript - 在完成循环之前,promise 得到解决

转载 作者:行者123 更新时间:2023-12-03 03:18:04 26 4
gpt4 key购买 nike

我正在使用循环将数据更新到服务器,一旦收到服务器的响应,它就会在我的本地数据库中更新。但是在完成本地数据库中的所有更新之前, promise 得到解决,并且只有一个数据被更新。谁能告诉我为什么在完成 for 循环内的所有过程之前 promise 就得到了解决?

function updatecategories (data, categoryname) {
var defer = $q.defer();
var proms = [];
var prom;
$log.log('Change in daybook change got called', data);
$log.log('Change in daybook change got called', categoryname);
for (var i = 0; i < data.length; i++) {
delete data[i].is_synced;
data[i].category = categoryname;
save(data[i]).then(function (result) {
$log.log('values changed in daybook', result);
proms.push('success');//only one data is getting synced to server rest is not by nid on 10-10
}, function (err) {
$log.log('error in update to daybook', err);
});
}
$q.all(proms).then(function () {
defer.resolve('success');
});
return defer.promise;
}

最佳答案

首先,请在此行之前添加 console.log(proms.length);: $q.all(proms).then(function () {

我猜测它会打印 0,因为第一次将任何内容推送到 proms 数组时将异步发生,这意味着解释器将完成运行 updatecategories 函数之后.

如果确实如此,请考虑将其更改为类似的内容:

proms.push(save(data[i]).then(function (result) {
$log.log('values changed in daybook', result);
}, function (err) {
$log.log('error in update to daybook', err);
}));

然后,当您点击 $q.all(proms) 行时,proms 将是一个充满 Unresolved Promise 的数组,其中 $q.all 将等待所有的解析,然后 defer.promise 也将解析。

关于javascript - 在完成循环之前,promise 得到解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46681851/

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