首页 > 解决方案 > 将对象推入数组

问题描述

我试图将对象添加到数组中。但是当我控制台日志得到空数组时。请检查我做错了什么。(当我控制台日志而不是推送它工作正常)

const fs = require("fs");
const XLSX = require("xlsx");
const axios = require('axios');

// Read the file into memory
const workbook = XLSX.readFile("excel.xlsx");

let worksheet = workbook.Sheets[workbook.SheetNames[0]];
// 3683
const jsonArr = [];

function addData() {
  for(let i = 2; i < 4; i++) {
    var add = worksheet[`C${i}`].v;
    axios.get('https://api.opencagedata.com/geocode/v1/json', {
      params : {
        q:add,
        key:keys
      }
    }
    )
    .then(function(res) {
      // console.log(res.data.results[2].geometry);
      jsonArr.push(res.data.results[2].geometry);
    })
    .catch(function(err) {
      console.log(err);
    })
  }
}
addData();
console.log(jsonArr);

标签: javascriptapiaxios

解决方案


如果使用 Promise,这是一个常见问题。相反,尝试在其中创建结构this()然后返回它,这样您就可以从链中检索它,例如:

const result = axios.get(...).then(res => res.data.results[2].geometry);

然后例如将其添加到外部数组中。

或者改为使用async/await以确保请求已正确完成:

const result = await axios.get(...);

推荐阅读