在深度嵌套的节点js函数结构中,将回调传递给深层的最佳方法是什么?我在这里有大约4层,它开始失控,污染了功能签名。
generic.js
function dumpProcessor(dump, callbacks) {
var listing = callbacks.getPropertySelector(dump);
callbacks.transformListingToProperty(listing);
}
function processDumps(dumps, callbacks){
console.log('process dumps');
dumpProcessor(dumps, callbacks)
}
function gotTheDumps(agent, dumps, callbacks){
endDateProperties(agent, function(){
processDumps(dumps, callbacks);
});
}
specific.js
function getPropertySelector() {}
function transformListingToProperty() {}
var callbacks = {
"agent": "agent",
"getPropertySelector": getPropertySelector,
"transformListingToProperty": transformListingToProperty
};
abc.getDumps("AGENT", generic.gotTheDumps, callbacks);
答案 0 :(得分:0)
这里的问题不是回调。事实上,你使用函数参数传递了几层深度相同的东西。这不是特定于回调的问题。这是面向对象编程发明的原因之一。通常通过使用对象来避免这种情况。在多个方法签名中反复出现的函数参数将转换为对象中的字段,这些函数将转换为同一对象的方法。然后你的所有方法都可以访问这些字段,你不必一遍又一遍地将它们作为函数参数传递。
dumper.dumpProcessor(someDump);
这样称呼:
{{1}}