我试图将信息推送到数组中,但数组是空的。我做错了什么?
function fixItems(items){
var fixeditems = [];
fs.readFile('prices.json', 'utf8', function(err, data){
if(err){}
var jason = JSON.parse(data);
for(var k = 0; k < jason.prices.length; k++){
for(var i = 0; i < items.itemsToReceive.length; i++){
fixeditems.push({
name: items.itemsToReceive[i].market_hash_name,
classid: items.itemsToReceive[i].classid
});
}
}
});
return fixeditems;
}
答案 0 :(得分:0)
这是一个异步调用,因此您的变量在填充之前会返回。 实际上你可以这样,如果async不是优先考虑的事情:
function fixItems(items){
let fixeditems = [];
let data = fs.readFileSync('prices.json', 'utf8')
let jason = JSON.parse(data);
for(var k = 0; k < jason.prices.length; k++){
for(var i = 0; i < items.itemsToReceive.length; i++){
fixeditems.push({
name: items.itemsToReceive[i].market_hash_name,
classid: items.itemsToReceive[i].classid
});
}
}
}
否则,您可以将所有内容包装在Promise
中,或使用Async等库来执行这些任务。