在同一文件夹中,我有3个不同的文件,内容如下:
•index.js
const getToken = require('./getToken.js');
console.log(getToken.getToken());
•getToken.js
const FS = require('fs'); //a library to read files
module.exports = {
getToken: function (){
FS.readFile('./token.txt', 'utf8', function (err, data) {
if (err) {
console.error(err);
} else {
console.log('Token is : ' + data);
return data;
}
});
}
}
•token.txt
foo
我使用NodeJs,fs,库来读取文件和Discord库 我得到了输出:
undefined //result of index.js
Token is : foo //result of getToken.js
代码工作正常,除非令牌没有正确地给予主js文件(index.js),即使它已正确读取。
这段代码有什么问题?为什么 console.log()的结果是错误的订单?
感谢。
答案 0 :(得分:1)
欢迎来到异步世界。在异步操作(fs.readFile为异步)后返回值时,需要使用回调或promise;
使用回调就像这样:
module.exports = {
getToken: function (callback){
FS.readFile('./token.txt', 'utf8', function (err, data) {
if (err) {
callback(err);
} else {
console.log('Token is : ' + data);
callback(null, data);
}
});
}
}
//Other file
const getToken = require('./getToken.js');
getToken.getToken(function(err, result){
if(err) return console.log(err);
console.log(result);
});