js的回调到底是怎样的一个原理?

学习node.js新手一名,想大概知道回调到底是怎样一个原理。
比如这段异步回调的代码:


function abc(err, data){
  console.log(data.toString());
}

require('fs').readFile(filename,abc);

这个err, data是怎么传给abc的?为啥能这样传参?想自定义这些参数,自己写一个回调函数又需要如何做?

我想明白这里的这些具体的原理,搞清楚它传值的过程。

另外就是异步使用的条件很迷惑。
比如,我想在http.createServer过程中把pathname传给router处理路由,路由处理调用函数把对应的.txt文件读出来,再通过response写到浏览器上。都有哪些是要用到异步?哪些过程可以用同步的?

阅读 1.4k
1 个回答
function dosomething(val,callback){
    try{
        var data = val*val*val //随便写的,你可以理解为对数据做某些处理
        callback(false,data)
    }catch(error){
        callback(error,null)
    }
}

function abc(err, data){
  if(err) console.log(err) return
  console.log(data.toString());
}

dosomething(100,abc)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题