试图进入阵列,但它仍然是空的

时间:2017-03-11 21:09:43

标签: javascript node.js

我试图将信息推送到数组中,但数组是空的。我做错了什么?

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;
}

1 个答案:

答案 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等库来执行这些任务。