Before completing the loop promise gets resolved
本问题已经有最佳答案,请猛点这里访问。
我正在使用循环来更新数据到服务器,一旦收到服务器的响应,它就会在我的本地db.But中更新,然后在本地数据库中完成所有更新之前,promise将得到解决,只有一个数据得到更新。 任何人都可以告诉我为什么在完成for循环中的所有进程之前解析了promise?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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; } |
首先,您可以在此行之前添加
我猜它会打印0,因为你第一次向
如果确实如此,请考虑将其更改为类似的内容:
1 2 3 4 5 | 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); })); |
然后,当你点击