了解Nodejs几个月,从一开始不理解非阻塞,到现在在写代码的时候已经适应。
前几天突然想到,涉及到I/O操作就callback,其余的都可以return,请问,各位前辈,这么讲对不对?
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
那你怎么看这段代码呢?
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(任意值,函数对象等)。
@sinoon
@eeandrew 恩,多谢提醒,我也觉得这样总结是不对的,但是目前我做的东西都可以用这种方式去化解(存在I/O操作的函数,用callback,不存在I/O操作的可以用return)。 所以我不由自主的觉得可能是这样,但做的东西还太少,又不确定所以上来问一下前辈们。 感谢~!
长的计算也得用callback
return和这个是两码事情,执行回调是因为事件执行了异步处理, 而你想通过return来返回callback的结果的话,是需要借助promise 或者 Q 这些库来同步封装才行。
这!!!!!
@eeandrew 赞同124点,吐槽3点:实际项目中碰到过大量回调,引起各种蛋疼时序问题,还得用Pro迷色去解决。。。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
那你怎么看这段代码呢?
@eeandrew 用promise封装过有点不同吧,我是指原生下面的情况
什么是return,return和callback没有关系,return只是告诉你返回了一个xxx(任意值,函数对象等)。
@sinoon
@eeandrew 恩,多谢提醒,我也觉得这样总结是不对的,但是目前我做的东西都可以用这种方式去化解(存在I/O操作的函数,用callback,不存在I/O操作的可以用return)。 所以我不由自主的觉得可能是这样,但做的东西还太少,又不确定所以上来问一下前辈们。 感谢~!
长的计算也得用callback
return和这个是两码事情,执行回调是因为事件执行了异步处理, 而你想通过return来返回callback的结果的话,是需要借助promise 或者 Q 这些库来同步封装才行。
这!!!!!
@eeandrew 赞同124点,吐槽3点:实际项目中碰到过大量回调,引起各种蛋疼时序问题,还得用Pro迷色去解决。。。