【发布时间】:2018-02-26 04:05:17
【问题描述】:
所以我是学习 Node 并试图理解它的异步部分的初学者。 readIn 中的以下代码应等待 readFile 完成,然后执行 whenDone 以更新 arr 变量,但无论我传入什么值,它总是显示 arr 为空。我认为arr 从未发生过变异,或者whenDone 函数从未等待readFile 完成。
有人可以解释一下我做错了什么或被误解了吗?
谢谢
var fs = require('fs');
var arr = [];
function readIn(callback){
fs.readFile(process.argv[2],'utf8',function whenDone(err, fileContent){
arr = fileContent.split('\n');
callback();
})
}
var result = arr.length -1
function printOut(){
console.log(result);
}
readIn(printOut);
【问题讨论】:
-
您定义 arr,然后定义函数 readIn。然后定义一个等于 -1 的 var 结果,因为当时长度为 0。然后定义 print 函数并调用 readIn 函数,该函数将打印 -1。
标签: javascript node.js asynchronous