callback后代码的最佳做法

这是我想要做的。

我目前使用node.js,它允许你做的事情之一是:

socket.on("sometopic", function() { // this is a callback } 

现在让我们说我有10个不同的主题,每个主题都有一个相应的处理函数,我保留在我的“窗口”中,例如:

 windows.callbacks["topic_a"] = function() { // code for cb a } windows.callbacks["topic_b"] = function() { // code for cb b } windows.callbacks["topic_z"] = function() { // code for cb z } 

还有一段代码我想在每个callback结束时执行。 一个简单的方法是用这个代码创build一个函数,并在每个callback结束时添加一个调用,但是这远远不够优雅。

任何人都可以提出一个更好的解决scheme? 有没有我不知道的最佳做法? 这种函数式编程对我来说是相当绿色的。

 // THIS IS AN IDEA // helper function teardownWith(fn){ return function (cb){ return function(){ return (cb(), fn()); }; }; } // prepare a modified function var endWithDate = teardownWith(function(){ log(Date()); }); // pass our callback into the modified function // endWithDate() returns the final callback. window.callbacks["cb_a"] = endWithDate(function(){ // code for cb_a }); 

考虑使用jQuery Deferred对象,并添加一个方法来执行“always”

jQuery延期的对象文档