关于回调的过程的一个问题。。
var fs = require (‘fs’);
fs.readFile (‘D:\a.txt’,‘utf8’, function (err,data) { if (err) throw err; console.log(data); })
这个过程应该是怎么样的啊? 我理解的是, 第一个地址传给readFile得到一个返回值a1,utf8再传给readFile,得到一个返回值a2,然后function作为回调函数传给readFile,function开始传递参数,返回值a1传给err,返回值a2传给data。如果地址出错,err里就是保存的错误信息,如果地址正确,err就是保存的a.txt里的内容。
我知道我的理解是错的。。但到底哪里有问题啊,按我的理解的话就算是把console.log(data);这句去掉,throw err还是可以正确打印出内容。。但事实上缺不是。。。求开导 = =
6 回复
我是这样理解的:fs可以调用运行时的参数,自己的属性和全局变量,job done后把job传回callback,callback爱怎么处理就咋处理
fs={
someatt:something,
someatt:anotherthing,
readFile:function(filename,format,callback){
var something,err,getfile....etc
//do the job with global var or argument or fs.att
callback(err,getfile)
}
}
但问题就在这。。怎么保证err参数就一定接受的是出错时的错误信息呢?
@CooldrinE 底层调用代码是libuv实现的,它来保证。
@jiyinyiyong 噢 明白了。。