gpt4 book ai didi

javascript - 然后 Angularjs 在 for 循环中根据 Promise 运行。如何访问当前项目的索引?

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

我有一个循环,它循环遍历 AngularJS 中对象的所有属性,并且对于每个属性,它使用 Restangular 进行 AJAX 调用。请求完成后,我想将该项目的 isNew 属性设置为 false。

目前正在运行的当前实现看起来像这样(删除了不重要的部分):

var promises = [];
for (var prop in items) {
if (items.hasOwnProperty(prop)) {

var newPromise = REST.Items
.all('items')
.post({ key: items[prop].key, value: items[prop].value })
.then(function (prop) {
items[prop].isNew = false;
}.bind(this, prop));

promises.push(newPromise);
}
}
return $q.all(promises);

这个实现似乎工作得很好,但是 jshint 提示在循环内创建函数:“不要在循环内创建函数。}.bind(this, prop));”

重构这部分代码的最佳方法是什么?

最佳答案

请参阅下面代码片段中的解决方案

var promises = [];
var handler = function (prop) {
items[prop].isNew = false;
};

for (var prop in items) {
if (items.hasOwnProperty(prop)) {

var newPromise = REST.Items
.all('items')
.post({ key: items[prop].key, value: items[prop].value })
.then(handler.bind(this, prop));

promises.push(newPromise);
}
}

return $q.all(promises);

关于javascript - 然后 Angularjs 在 for 循环中根据 Promise 运行。如何访问当前项目的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33670518/

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