按顺序/系列发出http请求

时间:2015-09-16 16:33:17

标签: angularjs promise

我用作业构建了一个数组。作业按开始和结束事务分组。事务是对Web服务的调用。整个交易可能如下所示:

  1. 创建交易(calls / opentransaction)
  2. DoSomething A(来电/ a)
  3. DoSomething B(来电/ b)
  4. 等。
  5. 关闭交易(calls / closetransaction)
  6. 我的伪代码看起来像这样:

    for (var i=0;i<jobs;i++)
    {
      $http(job);
    }
    

    这很好用,但顺序是随机的。我需要确保订单得到维护。怎么能强制执行呢?

2 个答案:

答案 0 :(得分:2)

保存您var options = { uri: 'http://localhost:8000/sampleRoute', method: 'POST', headers: { authorization: 'authorizationToken' }, form: {dataset: 'test_dataset'}, resolveWithFullResponse: true }; 电话的承诺,让下一份工作等到上一份工作完成。这看起来像这样:

$http

答案 1 :(得分:0)

我不认为循环是一种很好的方法,我建议使用$q并使用promise来迭代你的任务。

function myPromiseFunction() {
   return $q(function(resolve, reject) {
       doThingOne
          .then(doThing2)
          .then(doThing3)
          .then(doThing4)
          .then(resolve)
          .catch(function(error) {
               console.log("Error in my promise:", error);
          });
   });
}

doThing是执行每个所需行为的函数,因此在您的情况下,第一件事就是创建事务,并在需要时将内容返回到下一个函数。