Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 回调后代码的最佳实践_Javascript_Node.js_Callback - Fatal编程技术网

Javascript 回调后代码的最佳实践

Javascript 回调后代码的最佳实践,javascript,node.js,callback,Javascript,Node.js,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"] = fu

这就是我要做的

我目前正在使用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
}
我希望在每次回调结束时都执行一段代码。一个简单的解决方法是使用此代码创建一个函数,并在每个回调的末尾添加一个调用,但这远远不够优雅


有谁能提出更好的解决方案吗?有没有我不知道的最佳实践?我对这种函数式编程相当熟悉。

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


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


为什么说在每次回调结束时调用另一个函数远远不够优雅?有时候,直接的方法确实是最具可读性的,因为最终我会有大量的重复,不知何故我觉得应该有更好的机制来实现这一点。这是一个回调函数,当你完成它时,执行另一个函数。为什么你说在每次回调结束时调用另一个函数远远不够优雅?有时候,直接的方法确实是最具可读性的,因为最终我会有大量的重复,不知何故我觉得应该有更好的机制来实现这一点。这是一个回调函数,当你完成它时,执行另一个函数。有趣的解决方案,它最终满足了我的需要。谢谢有趣的解决方案,它最终满足了我的需求。谢谢这是一个有趣的jQuery特性,但我担心将它链接到我的非jQuery代码会花费太多的胶水代码。。。尽管如此,它仍然是一个解决方案。这是一个有趣的jQuery特性,但我担心将它链接到非jQuery代码会花费太多的胶水代码。。。尽管如此,这仍然是一个解决方案。
// 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
});