循环中的 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
});