Angularjs 角函数同步

Angularjs 角函数同步,angularjs,asynchronous,synchronization,angularjs-service,Angularjs,Asynchronous,Synchronization,Angularjs Service,我的问题是如何按顺序执行3个函数(在服务中声明): function1(); function2(); function3(); 所有函数都包含http命令(例如put或get)。这就是为什么如果我使用上面的代码,函数3将在函数2之前执行。我尝试用then链接函数,但也没有用。您需要返回承诺,然后使用承诺链接,因为您的函数是异步的 function1().then(function(response) { /* executes function2, if functi

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

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

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

您需要返回承诺,然后使用承诺链接,因为您的函数是异步的

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

在文档()中,您可以看到如何返回承诺。对于使用$http或$resource提供程序的情况:它们总是返回一个承诺,您可以将其用于您的目的

您需要返回承诺,然后使用承诺链接,因为您的函数是异步的

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

在文档()中,您可以看到如何返回承诺。对于使用$http或$resource提供程序的情况:它们总是返回一个承诺,您可以将其用于您的目的

是的,谢谢,然后使用then/PROMITES还有其他方法吗?$http是硬编码异步的。您需要编写自己的提供程序来进行同步调用。但是,这是一个非常糟糕的主意,因为您的UI被阻塞了。是的,谢谢,有没有其他方法可以做到这一点,然后使用then/promises?$http是硬编码异步的。您需要编写自己的提供程序来进行同步调用。然而,这是一个非常糟糕的主意,因为你的UI被阻塞了。