Angular函数同步

Angular function syncronization

我的问题是如何按顺序执行 3 个函数(在服务中声明):

   function1();
   function2();
   function3();

所有函数都包含 http 命令(例如 put 或 get)。这就是为什么如果我使用上面的代码,函数 3 将在函数 2 之前执行。我尝试将函数与 then 链接起来,但这也无济于事。

您需要 return 一个承诺,然后使用承诺链接,因为您的函数是异步的。

function1().then(function(response) {
   /* executes function2, if function1 return success */
   function2().then(function(response) {
      /* executes function3, if function2 return success */
      function3();
   }
}

在 angular 文档 (https://docs.angularjs.org/api/ng/service/$q) 中,您可以了解如何 return 承诺。对于您使用 $http 或 $resource 提供程序的情况:它们总是 return 一个您可以用于您的目的的承诺。