2016-11-16 72 views
-5

我有一個nodeJS應用程序從API請求數據一次。然後我想通過使用單獨的函數對這些數據進行一些處理。但是,由於AJAX是異步的,我不得不使用異步如下:如何避免一個AJAX呼叫後的回調地獄

async.series(
[ 
    function(callback) { getContentFromAPI("banana",callback); }, 
    function(callback) { doSomeProcess1(callback); }, 
    function(callback) { doSomeProcess2(callback); }, 
    function(callback) { doSomeProcess3(callback); }, 
    function(callback) { doSomeProcess4(callback); }, 
] 
); 

有沒有什麼辦法可以做得更好?我只請求一個異步進程,並希望避免使用異步,因爲所有其他進程都是同步的。

我該怎麼辦?

+2

使用從同步的承諾,並切換到異步編程 – baao

+1

,你應該考慮使用承諾API –

+1

Ajax,in節點? – adeneo

回答

1

但是,由於AJAX是異步的,我不得不異步如下

你已經過於複雜的一個非常簡單和普通使用過程中...我不知道「簽名「什麼的getContentFromAPI是,但是,如果按照‘標準’節點回調‘簽名’ - 那麼你的過程shouldBe這樣那樣簡單

getContentFromAPI("banana", function(error, data) { 
    if (error) { 
     // your error handling goes here 
    } else { 
     doSomeProcess1(); 
     doSomeProcess2(); 
     doSomeProcess3(); 
     doSomeProcess4(); 
    } 
});