fetch:将项目推送到数组

时间:2018-03-30 10:37:43

标签: javascript arrays json fetch

我很难在这里看到什么错。我拉了一些json(是的,我知道我用的是文本文件)。我在全局范围内有一个数组,我希望将条目推送到,我在json上迭代并将其推送到该数组。只有当我注销它时它才是空的。它可能是一些愚蠢的东西,但任何帮助都会非常感激。

let charities = [];
fetch('../mapdata/markers.txt').then(response => {
        if (response.ok) {
            return response.json();
        }
        throw new Error('Network response error.');
    })
    .then(charData => {
        console.log(`inside: ${JSON.stringify(charData, null, 2)}`);
        charData.map(entry => {
            return charities.push(entry);
        });
    })
    .catch(error => {
        console.log('There has been a problem: ', error.message);
    });
console.log(`outside: ${JSON.stringify(charities, null, 2)}`);

而且我认为这可能是一个异步问题...

1 个答案:

答案 0 :(得分:1)

您正在执行异步操作并在触发asyc操作后读取[]。它将永远是空的。

相反,然后输入console.log(outside: ${JSON.stringify(charities, null, 2)});在数据被推入数组之后,在第二个then()之内。

.then(charData => {
    console.log(`inside: ${JSON.stringify(charData, null, 2)}`);
    charData.map(entry => {
        return charities.push(entry);
    });

    console.log(outside: ${JSON.stringify(charities, null, 2)});
})