This question already has answers here:
How do I return the response from an asynchronous call?
(38个答案)
2年前关闭。
使用readFile json返回数组消息,对象返回空数组,为什么?
我的代码:
如何返回我的数组消息?我的this._message_list返回空数组的方式?
如果您使用
(38个答案)
2年前关闭。
使用readFile json返回数组消息,对象返回空数组,为什么?
我的代码:
var fs = require("fs"); // filesystem
class Message {
constructor() {
this._message_list = [];
}
set message_list(val) {
this._message_list = val;
}
get message_list() {
return this._message_list;
}
getMessages() {
fs.readFile("./models/messages-list.json", "utf8", (err, data) => {
if(err){
return err;
}
// append array messages
this._message_list = Object.keys(JSON.parse(data));
console.log(this._message_list); // return ["message 1", "message 2"]
});
return this._message_list; // return array messages
}
}
module.exports = {
Message
};
var Message = require("./models/message");
let mensagem = null;
mensagem = new Message.Message();
console.log( mensagem.getMessages()); //return []
如何返回我的数组消息?我的this._message_list返回空数组的方式?
最佳答案
由于fs.readFile
是异步的,因此在执行以下操作之前不会返回:
// return array messages
return this._message_list;
如果您使用
fs.readFileSync
,这应该可以。getMessages() {
var data = fs.readFileSync("./models/messages-list.json", "utf8");
this._message_list = Object.keys(JSON.parse(data));
// log ["message 1", "message 2"]
console.log(this._message_list);
// return array messages
return this._message_list;
}
关于javascript - readFile,escope和类Javascript ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48113054/
10-14 00:07