循环中的 Restangular post
Restangular post in loop
我需要在循环中调用 restangular.post 的列表,以添加许多用户(例如)
我有一家工厂做类似的事情:
createUser (user) {
return Restangular.all(URL).post(user);
}
然后在控制器中需要在循环内调用这个工厂:
for( var us in users){
createUser(us);
}
问题是我做不到!它总是只添加最后一个用户对象!,那么如何使用 Restangular 执行 $q.all() ,或者还有其他解决方案??
好吧,问题太小了。
问题是您在循环中调用了 createUser 函数。所以你的循环继续执行但 Post 请求没有得到满足。因此,您的最后一个用户对象只会被保存。
那么你可以做什么:
您必须制作递归函数,当您的第一个对象被保存时,然后用第二个对象调用相同的函数,依此类推。
或
您可以尝试使用回调函数。请先阅读回调函数的工作原理。
这里我使用了回调函数。可能对你有帮助。
function createUser(userObject, cb){
Restangular
.all(URL)
.post(user)
.then(function (response){
if(response){
cb(null, response); //user created.. now callback the function
}else{
cb(err, 'error occured');
}
})
.catch(function(ex){
//something bad happened...
})
}
var index = 0;
function save(){
if(users.length != index + 1){
createUser(users[index], function(data){
console.log(data); //this is saved data which is return by callback
index++;
});
}
}
现在您只需调用保存功能即可。这里的用户是一个包含所有用户对象的数组。
var promises = [];
for (var us in users) {
promises.push(Restangular.all(URL).post(us);
}
$q.all(promises).then(function (responses) {
// responses is an array with one return value per request made
});
我需要在循环中调用 restangular.post 的列表,以添加许多用户(例如)
我有一家工厂做类似的事情:
createUser (user) {
return Restangular.all(URL).post(user);
}
然后在控制器中需要在循环内调用这个工厂:
for( var us in users){
createUser(us);
}
问题是我做不到!它总是只添加最后一个用户对象!,那么如何使用 Restangular 执行 $q.all() ,或者还有其他解决方案??
好吧,问题太小了。
问题是您在循环中调用了 createUser 函数。所以你的循环继续执行但 Post 请求没有得到满足。因此,您的最后一个用户对象只会被保存。
那么你可以做什么:
您必须制作递归函数,当您的第一个对象被保存时,然后用第二个对象调用相同的函数,依此类推。
或
您可以尝试使用回调函数。请先阅读回调函数的工作原理。
这里我使用了回调函数。可能对你有帮助。
function createUser(userObject, cb){
Restangular
.all(URL)
.post(user)
.then(function (response){
if(response){
cb(null, response); //user created.. now callback the function
}else{
cb(err, 'error occured');
}
})
.catch(function(ex){
//something bad happened...
})
}
var index = 0;
function save(){
if(users.length != index + 1){
createUser(users[index], function(data){
console.log(data); //this is saved data which is return by callback
index++;
});
}
}
现在您只需调用保存功能即可。这里的用户是一个包含所有用户对象的数组。
var promises = [];
for (var us in users) {
promises.push(Restangular.all(URL).post(us);
}
$q.all(promises).then(function (responses) {
// responses is an array with one return value per request made
});