如何保存txt文件中的数据返回函数之外的数组?

时间:2019-05-14 09:16:09

标签: javascript

这是我第一次使用javascript,我试图将从.txt文件中提取的数据保存到我在代码外部和代码开头声明的数组中。 (这是电子框架)。

我试图提取数据并将其保存到数组中。

const { remote } = require('electron')
const app = remote.app
const $ = require('jquery')
const fs = require('fs')
const dialog = remote.dialog

const win = remote.getCurrentWindow()

let dataMeetingsFromTxt

{...}

function readMeetingsToSaveIntoArray() {
  dataMeetingsFromTxt = []
  fs.readFile('./dataMeetings.txt', 'utf-8', (err, data) => {
    if (err) throw err;
    dataMeetingsFromTxt = data.toString().split("\n");
  })
}

{...}

$('.oneBTN').on('click', () => {
  readMeetingsToSaveIntoArray()
  console.log(dataMeetingsFromTxt.length) //The output is always 'undefined'
})

输出始终为'undefined'。

1 个答案:

答案 0 :(得分:1)

这是因为fs.readFile是异步的。第三个参数是一个回调,这是在console.log中应该完成的地方。否则,单击处理程序上的console.log将在readFile的回调之前执行。

const { remote } = require('electron')
const app = remote.app
const $ = require('jquery')
const fs = require('fs')
const dialog = remote.dialog

const win = remote.getCurrentWindow()

let dataMeetingsFromTxt

{...}

function readMeetingsToSaveIntoArray() {
  dataMeetingsFromTxt = []
  fs.readFile('./dataMeetings.txt', 'utf-8', (err, data) => {
    if (err) throw err;
    dataMeetingsFromTxt = data.toString().split("\n");
    console.log(dataMeetingsFromTxt.length);
  })
}

{...}

$('.oneBTN').on('click', () => {
  readMeetingsToSaveIntoArray()
})