2011-09-12 40 views
1

我是ASYNC編程新手,請耐心等待。我打電話給Web服務API,速度可能難以預料。在前端,我可以用一個「加載」燈箱來處理它。然而,在後端,我有我的要求:如何正確處理Node.JS中的延遲操作?

var req = http.request(options, function(res) { 
    res.on('data', function(chunk) { 
    doStuff(); 
    }); 

    res.on('end', function() { 
    doMoreStuff(); // This can take a while to get to. 
    return someInfo(); 
    }); 
}); 

req.end(); 

所有這一切都是在一個makeRequest模塊。那麼我是否應該將回調函數傳遞到makeRequest,然後在'end'事件之後運行?看起來這可能會導致一個很長的鏈接事件結構。

所以任何幫助如何構造這將不勝感激。

:以上主要是僞代碼,所以如果有語法錯誤,請大家明白,它是僞

回答

1

是的,通常你會傳遞一個回調到這個有什麼功能,並在「結束」被髮送,你應該把你在請求中收集的數據,並將其傳遞給你的回調。

我意識到這是僞代碼,你可能知道,我只是想反正說。請記住,'數據'可以被多次調用,並且在您的最終功能中的'返回'將不會執行任何操作。

有關執行請求的示例,您可以在這裏查看我的答案。 Why won't my ExpressJS properly execute a request command?

+0

返回是來自'CoffeeScript'的痕跡。儘管謝謝你的回答! – Shamoon