【发布时间】:2014-08-20 06:15:51
【问题描述】:
下面我写了一个示例代码。
//test.js
var fs = require('fs');
fs.readdir(__dirname+'/app/img/', function(err, files) {
console.log(files);
});
someFunction(function(output){
console.log(output);
});
console.log('This is the final console call');
function someFunction(callback) {
callback(' I am some funciton. ');
}
然后,运行“node test.js”后,我得到了以下结果。
$ node test2.js
I am some funciton.
This is the final console call
[ 'photo1', 'photo2' ]
someFunction() 是我自己创建的,用于模拟 fs.readdir() 中的回调函数。 作为我最初的假设,结果应该是
[ 'photo1', 'photo2' ]
I am some funciton.
This is the final console call
或
This is the final console call
[ 'photo1', 'photo2' ]
I am some funciton.
但是现在 fs.readdir() 和 someFunction() 的日志分别出现在最终调用日志的前后。
嗯....我完全想不通。
因此,我的问题是:
为什么来自 fs.readdir() 的日志是最后一个日志?
是因为 fs.readdir() 需要更多时间来执行吗?
或者,我对这个问题缺乏一些重要的概念?
谢谢~!
【问题讨论】:
-
我猜“这只是因为...”...拥有它总是好事:impressivewebs.com/callback-functions-javascript.
-
您缺少的重要概念是异步。 Some functions 异步调用他们的回调。你的
someFunc没有。
标签: javascript node.js asynchronous callback