将回调传递给深层嵌套函数的最佳实践

时间:2016-10-16 20:55:46

标签: javascript node.js

在深度嵌套的节点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);

1 个答案:

答案 0 :(得分:0)

这里的问题不是回调。事实上,你使用函数参数传递了几层深度相同的东西。这不是特定于回调的问题。这是面向对象编程发明的原因之一。通常通过使用对象来避免这种情况。在多个方法签名中反复出现的函数参数将转换为对象中的字段,这些函数将转换为同一对象的方法。然后你的所有方法都可以访问这些字段,你不必一遍又一遍地将它们作为函数参数传递。

dumper.dumpProcessor(someDump);

这样称呼:

{{1}}