0

我的問題是如何才能執行3個功能(在服務聲明):角功能同步化

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

所有功能都包含HTTP命令(例如put或get)。這就是爲什麼如果我使用上面的代碼函數3將在函數2之前執行。我嘗試鏈接功能,但也沒有幫助。

回答

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的情況:他們總是返回一個您可以用於您的目的的承諾。

+0

是的,謝謝,有沒有其他的方式來做到這一點,然後使用/承諾? – playerone

+1

$ http是硬編碼的異步。您需要編寫自己的提供程序以進行同步調用。然而,這是一個非常糟糕的主意,因爲你的UI被阻止。 – trollr