这就是我想要做的事情。
我目前正在使用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
}
我希望在每次回调结束时执行一段代码。一个简单的方法是使用此代码创建一个函数,并在每次回调结束时添加一个调用,但这远非优雅。
有人可以建议更好的解决方案吗?有没有我不知道的最佳做法?我对这种函数式编程非常环保。
答案 0 :(得分:4)
// 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
});
答案 1 :(得分:1)
考虑使用jQuery Deferred对象,并添加一个方法来执行'always'