数组在循环中填充后为空

时间:2018-10-05 15:28:48

标签: javascript arrays json

我正在处理来自API的JSON响应。 ResponseJson包含有关类别的信息; responseJson.name包含一个类别名称(已在控制台中测试)。现在,我想添加所有类别名称并将其存储在空数组categoryNames中。在for循环之后,当我尝试在控制台中打印categoryNames时它是空的,我不确定自己缺少什么。这是代码:

_getCategories = item => {
    const categoryNames = [];
    for (let category of item.categories) {
      fetch('http://54.168.73.151/wp-json/wp/v2/categories/' + category)
        .then(response => response.json())
        .then(responseJson => {
          var categoryName = responseJson.name;
          categoryNames.push(categoryName);
        })
        .catch(error => {
          this.setState({
            isLoading: false,
            isError: true,
          });
          console.error(error);
        });
    }
    console.log(categoryNames);
  };

这个问题被确定为可能是另一个问题的重复,但是答案是另一个问题是关于$ ajax调用的,而我正在尝试使用纯JavaScript。使用此语法有解决方案吗?

1 个答案:

答案 0 :(得分:0)

_getCategories = item => {
  const categoryNames = [];
  let  fetches = [];
  for (let category of item.categories) {
    fetches.push(fetch('http://54.168.73.151/wp-json/wp/v2/categories/' + category));
  }

  Promise.all(fetches).then(res => {
    /* do your stuff here */
  })
};

您应该Promise.all等待所有提取完成。 你可以尝试上面的代码吗?