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延期的对象文档