0
我的问题是如何才能执行3个功能(在服务声明):角功能同步化
function1();
function2();
function3();
所有功能都包含HTTP命令(例如put或get)。这就是为什么如果我使用上面的代码函数3将在函数2之前执行。我尝试链接功能,但也没有帮助。
我的问题是如何才能执行3个功能(在服务声明):角功能同步化
function1();
function2();
function3();
所有功能都包含HTTP命令(例如put或get)。这就是为什么如果我使用上面的代码函数3将在函数2之前执行。我尝试链接功能,但也没有帮助。
您需要返回承诺,然后使用承诺链接,因为您的函数是异步的。
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 provider的情况:他们总是返回一个您可以用于您的目的的承诺。
是的,谢谢,有没有其他的方式来做到这一点,然后使用/承诺? – playerone
$ http是硬编码的异步。您需要编写自己的提供程序以进行同步调用。然而,这是一个非常糟糕的主意,因为你的UI被阻止。 – trollr