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