涉及到I/O操作就callback,其余的都可以return
了解Nodejs几个月,从一开始不理解非阻塞,到现在在写代码的时候已经适应。
前几天突然想到,涉及到I/O操作就callback,其余的都可以return,请问,各位前辈,这么讲对不对?
10 回复
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
那你怎么看这段代码呢?
var Q = require('q'),
fs = require('fs');
var readFile = Q.denodeify(fs.readFile);
function getFileContent(filePath) {
return readFile(filePath,'utf8'); //这里也用了return. 怎么理解呢?
}
getFileContent('test.txt').then(console.log).fail(console.log).done();
@eeandrew 用promise封装过有点不同吧,我是指原生下面的情况
什么是return,return和callback没有关系,return只是告诉你返回了一个xxx(任意值,函数对象等)。
- 异步操作使用回调函数当然没有错
- 不建议用这种方式去总结
- 实际项目中尽量别用回调
- 不要把异步和非阻塞当成一回事
@eeandrew 恩,多谢提醒,我也觉得这样总结是不对的,但是目前我做的东西都可以用这种方式去化解(存在I/O操作的函数,用callback,不存在I/O操作的可以用return)。 所以我不由自主的觉得可能是这样,但做的东西还太少,又不确定所以上来问一下前辈们。 感谢~!
长的计算也得用callback
return和这个是两码事情,执行回调是因为事件执行了异步处理, 而你想通过return来返回callback的结果的话,是需要借助promise 或者 Q 这些库来同步封装才行。
这!!!!!
@eeandrew 赞同124点,吐槽3点:实际项目中碰到过大量回调,引起各种蛋疼时序问题,还得用Pro迷色去解决。。。