为什么nodejs的函数返回值是undefined呢? 我觉得代码没错啊?

CielSwift 发布于 01/11 17:58
阅读 46
收藏 0

loadFile 竟然返回undefined 想不通啊?

加载中
0
银杏卡卡
银杏卡卡

fs.readFile读取文件是在其异步回调函数中对file_a赋值,请注意readFile是异步读,不是同步,也就是说,你的loadFile函数返回file_a是在fs.readFile函数的结果回调之前。

0
CielSwift
CielSwift
那这样是不是程序不可控啊?
银杏卡卡
银杏卡卡
nodejs的异步执行就是其优点之一,某时的确也是缺点,你可以试试fs.readFileSync同步读取文件试试
0
CielSwift
CielSwift
@银杏卡卡 手机端好想不能评论,那这样是不是程序很难控制啊?因为我不知道什么时候会执行什么代码。
0
H
Hejs

利用回调函数,就可以解决啦。

CielSwift
CielSwift
不知到怎么用,刚学 感觉很多地方和其他语言都不一样;
0
H
Hejs
loadFile(request.url, 'utf-8', (data) => {
  console.log(data);
  response.end(data);
});

function loadFile(path, encoding, callback) {
  file.read(.., function(err, data){
    // 错误判断
    callback(data);
  });
}

 

返回顶部
顶部