我正在尝试使用d3.json
函数内的module.exports
模块读取json文件。
我想在调用module.exports文件后返回数据。
我试过了:
const d3 = require('d3')
module.exports = () => {
let jsonfile = 'link/to/json/file.json'
d3.json(jsonfile, (err, data) => {
if (err) {
throw err
}
return data
}
}
调用此模块文件后,出现undefined
错误。所以我在这段代码中添加了一些更改。
首先我在d3.json
函数
const d3 = require('d3')
module.exports = () => {
let out;
let jsonfile = 'link/to/json/file.json'
d3.json(jsonfile, (err, data) => {
if (err) {
throw err
}
out = data
}
return out
}
输出也是undefined
。
其次,我在调用module.exports文件后尝试使用de inner function d3.json
File A
const d3 = require('d3')
module.exports = () => {
let jsonfile = 'link/to/json/file.json'
this.out = d3.json(jsonfile, (err, data) => {
if (err) {
throw err
}
out = data
}
return out
}
但是,我使用最后一个方法得到了一个TypeError。
如何在调用module.exports文件后从d3.json
返回数据?
答案 0 :(得分:2)
您可以导出一个返回承诺的承诺或函数:
const d3 = require('d3')
module.exports = (file) => new Promise((resolve, reject) => {
d3.json(file, (err, data) => {
if (err) {
reject(err)
} else {
resolve(data)
}
})
在您的其他档案中
jsonPromise('link/to/json/file.json').then(data => {
// data available here
})