我嘗試通過樹執行遞歸,以便爲樹中的每個節點執行node_func
。 node_func
也會返回[values]
下樹中的下一個值。使用異步運行遞歸函數時的回調錯誤
我使用async.eachSeries
它得到樹的下一級中的節點列表。 該函數在樹的第一個分支上成功運行,但在有停止條件的葉上,我嘗試調用callback
,但它是undefined
。
代碼:
function clone(a) {
return JSON.parse(JSON.stringify(a));
}
var searchNext = function(params, callbackSN){
var seParams = clone(params);
node_func(seParams,function(searchRes){
//Stop Condition - return
if (searchRes["nextFeature"] != 1){
return callbackSN(); //Stop Condition
}
var values = searchRes["values"]
var paramsArr = []
for (var i = 0; i < values.length; i++) {
var seParams2 = clone(seParams);
seParams2["value"].push(values[i]["value"])
paramsArr.push(seParams2)
};
async.eachSeries(paramsArr, searchNext, function(err){
return callbackSN(err)
});
})
}
//init search
var params = {"value" :[]}
searchNext(params,console.log)
當我運行它,它運行在第一個分支,當它到達了「停止條件」我收到以下錯誤:
TypeError: undefined is not a function
指着行:
return callbackSN(); //Stop Condition
在停止狀態
你說得對。我已經更新了代碼。但是,它仍然沒有達到目標。正如我寫的,它在「停止條件」行上失敗。 – skme
很難看出問題出在哪裏,因爲我不知道代碼的其餘部分是幹什麼的(作爲node_func函數)您可以發佈所有代碼嗎? –
我很確定'node_func'是不相關的,但我會嘗試創建一個我可以輕鬆共享的示例函數。 – skme