當你在你的問題提供(由jfriend00評論所暗示的)的例子在序列正在運行的例子。如果你試圖避免「死亡金字塔」的承諾是一個很好的方式來做到這一點,正如「史蒂文卡斯帕爾」所建議的那樣。
然而,還有其他常見的方法來做同樣的事情。其中一個其他常見的方法來解決,這是使用caolan/async's瀑布方法:
async.waterfall([
function(callback) {
gm_scrape.search_link(request, function(list){
callback(null, list);
});
},
function(callback) {
gm_scrape.fetch_profiles(list, function(profiles, request){
callback(null, profiles);
});
}
], function(err, result) {
console.log("the profile is ", result);
});
然而,如果這可能沒有什麼意義,除非你有嵌入式3-4回調。總體而言,Promise可能是一個更好的設計模式,因爲此解決方案更適合現有的代碼庫,沒有承諾,您需要一種方法來組織依賴於最後一個結果的一系列長任務,其中回調將是混亂的,很難管理。如果你的模塊沒有可用的承諾,並且你不想花費時間來封裝它(因爲這些回調中斷會促使大多數承諾模塊提供幫助器),這也可能是一個更簡單的解決方案。
這些按順序運行。首先'gm_scrape.search_link()'運行,然後當它完成時,它調用它的回調,然後在該回調中運行'gm_scrape.fetch_profiles()'。你有什麼確切的問題需要你的幫助? – jfriend00