【问题标题】:Need help understanding Node asynchronous.需要帮助理解 Node 异步。
【发布时间】: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);

【问题讨论】:

标签: javascript node.js asynchronous


【解决方案1】:

readFile 函数是异步的,因此它将控制权返回给调用者。 你应该这样重写:

var fs = require('fs');


function readIn(callback){
    fs.readFile(process.argv[2],'utf8',function whenDone(err, fileContent){
        var arr = fileContent.split('\n');
        callback(arr);
    })
}


function printOut(arr){
    console.log(arr);
}

readIn(printOut);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    相关资源
    最近更新 更多