角度函数同步

时间:2016-03-17 10:32:09

标签: angularjs asynchronous synchronization angularjs-service

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

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

所有函数都包含http命令(例如put或get)。这就是为什么如果我使用函数3以上的代码将在函数2之前执行。我尝试用函数链接函数但是没有帮助。

1 个答案:

答案 0 :(得分:2)

你需要返回一个promise,然后使用promise chaining,因为你的函数是异步的。

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

在角度文档(https://docs.angularjs.org/api/ng/service/$q)中,您可以看到如何返回承诺。对于您使用$ http或$ resource提供者的情况:他们总是返回一个可以用于您的目的的承诺。