首页 > 解决方案 > 为什么 push() 函数不能与 Nodejs 中的 fs 一起使用

问题描述

数据.txt:

xxxx1;yyyy1
xxxx2;yyyy2
xxxx3;yyyy3
xxxx4;yyyy4
xxxx5;yyyy5

这是我的 data.txt 的样子以及运行以下函数时的样子:

var fs = require('fs');
var x = [];
var y = [];
function pushdata(){
  fs.readFile('data.txt', (err, data) => {
    data = data.toString().split("\n");
    for (let i = 0; i < data.length; i++) {
      x.push(data[i].split(';')[0]);
      y.push(data[i].split(';')[1]);
    }
  });
}
pushdata()
console.log(x, y);

输出是:

[] []

代替:

[ 'xxxx1', 'xxxx2', 'xxxx3', 'xxxx4', 'xxxx5' ] [ 'yyyy1', 'yyyy2', 'yyyy3', 'yyyy4', 'yyyy5' ]

我究竟做错了什么?

标签: javascriptarraysnode.jsfunctionpush

解决方案


你必须等待完成。在将任何内容推入阵列之前记录阵列

var fs = require('fs');
var x = [];
var y = [];
function pushdata(done){
  fs.readFile('data.txt', (err, data) => {
    data = data.toString().split("\n");
    for (let i = 0; i < data.length; i++) {
      x.push(data[i].split(';')[0]);
      y.push(data[i].split(';')[1]);
    }
    done()
  });
}

pushdata(function () {
  console.log(x, y); 
})

推荐阅读