簡體   English   中英

如何訪問 JavaScript 事件回調函數內的變量?

[英]How to access variables that are inside a callback function of a JavaScript event?

我正在嘗試使用csvtojson將 CSV 文件轉換為 JSON。 我使用csvtojson庫和fs來讀入文件。我可以轉換它,但是,我不知道之后如何訪問變量。 我是 javascript 新手,我認為來自其他語言的技術沒有奏效......我正在從另一個 js 文件調用該函數,並希望能夠從converter.on('end_parsed'...)函數。 下面的代碼

'use strict'

const fs = require('fs')
const Converter = require('csvtojson').Converter

exports.myfuncc = function () {
  var converter = new Converter({})
  var csvEncoding = { encoding: 'utf16le' }
  var csvString = fs.readFileSync('C:\\Users\\jgipe\\Desktop\\csvs\\201508.txt', csvEncoding).toString()
  converter.fromString(csvString, function (err, result) {
    if (err) { console.log(err) }
  })

  converter.on('end_parsed', function (jsonArray) {
    // Just examples of the data contained in one object
    console.log(jsonArray[9]['Date'])
    console.log(jsonArray[9]['Package Name'])
    console.log(jsonArray[9]['Current Device Installs'])
    console.log(jsonArray[9]['Daily Device Installs'])
    console.log(jsonArray[9]['Daily Device Uninstalls'])
    console.log(jsonArray[9]['Daily Device Upgrades'])
    console.log(jsonArray[9]['Current User Installs'])
    console.log(jsonArray[9]['Total User Installs'])
    console.log(jsonArray[9]['Daily User Installs'])
    console.log(jsonArray[9]['Daily User Uninstalls'])
  })
}

將回調函數作為exports.myfuncc的參數,如下所示:

'use strict'

const fs = require('fs')
const Converter = require('csvtojson').Converter

exports.myfuncc = function (callback) {
  var converter = new Converter({})
  var csvEncoding = { encoding: 'utf16le' }
  var csvString = fs.readFileSync('C:\\Users\\jgipe\\Desktop\\csvs\\201508.txt', csvEncoding).toString()
  converter.fromString(csvString, function (err, result) {
    if (err) { console.log(err) }
  })

  converter.on('end_parsed', callback)
}

然后在另一個文件中這樣調用它:

exports.myfuncc(function(jsonArray){
    // You can access jsonArray...
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM