添加值后对象为空 Axios

问题描述 投票:0回答:1

我是javascript新手,需要帮助解决这个问题。我看了很多文章,但无法解决这个问题,谁能纠正我的代码。这里,链接=一个包含javascript代码的URL数组,响应=该URL上的javascript代码。

 var code = {}

links.forEach(url => {
       axios.get(url)
            .then(response => {
                  code[`file${i++}.js`] = response.data
             })
             .catch(err => {
                  console.error(err)
             })
});

// Come here only when the above loop has finished execution
//  dosomething with variable code

console.log(code)

当我打印变量代码时,它是一个空对象。我想收集代码对象中的所有值,然后继续执行。

注意--我想在上述循环结束后继续执行下一个循环。

javascript asynchronous promise callback axios
1个回答
0
投票

由于你有一个async调用来填充对象,所以如果你在循环后立即打印,数据将无法使用。

你应该使用async-await与Promise.all

async function someFunc() {
...

    try {

        var code = {}

        const promises = links.map(url => {
               return axios.get(url)
                    .then(response => {
                          code[`file${i++}.js`] = response.data
                     })
                     .catch(err => {
                          console.error(err)
                     })
        });
        await Promise.all(promises);

        console.log(code)

    }catch(err) {
      console.log(err);
    }
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.