当使用 $q.all() 获得多个响应时,我在响应对象中获得了相同的值。我得到了与声明的 promise 一样多的对象,但所有“名称”字段都具有相同的值(最后一个,3)。
.controller('myCtrl', function ($scope, $state, $q, myService) {
$scope.myList = [];
$scope.create = function() {
var newObject;
var promises = [];
for(var i = 0; i < 4; i++){
newObject = { name: i };
promises[i] = myService.create(newObject);
}
$q.all(promises).then(
function (response) {
$scope.myList = response;
}
);
};
}
这是我的服务:
.service('myService', function ($http, $q, baseURL) {
this.create = function(object) {
var deferred = $q.defer();
//console.log shows that object still has the proper 'name' value
$http.post(url, object).then(
function (response) {
// console.log shows that all response objects have the same 'name' value.
deferred.resolve(response);
}
);
return deferred.promise;
};
}
欢迎任何意见,因为这是我在 Angular 中实现 promise 的第一种方法。
最佳答案
通过在循环内移动 newObject 声明来解决,当我们重新声明变量时,promise 会保留先前值的副本。
关于javascript - 在 angularJS + express 中使用 $q.all 重复响应 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38960362/