Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Do axios请求n次,其中n是以前响应的长度_Javascript_Node.js_Express_Axios - Fatal编程技术网

Javascript Do axios请求n次,其中n是以前响应的长度

Javascript Do axios请求n次,其中n是以前响应的长度,javascript,node.js,express,axios,Javascript,Node.js,Express,Axios,使用axios,我想将地址转换为各自的坐标 从API获取地址列表 从数字1获取对象响应,并将响应的每个地址转换为 使用谷歌API进行协调 然后我想将这些坐标键添加到每个对象响应中 这是我的尝试,但它无法工作,因为它是异步的 let array = []; axios.get('https://www.data.qld.gov.au/api/3/action/datastore_search?resource_id=346d58fc-b7c1- 4c38-bf4d-c9d5fb

使用axios,我想将地址转换为各自的坐标

  • 从API获取地址列表
  • 从数字1获取对象响应,并将响应的每个地址转换为 使用谷歌API进行协调
  • 然后我想将这些坐标键添加到每个对象响应中
  • 这是我的尝试,但它无法工作,因为它是异步的

     let array = [];
        axios.get('https://www.data.qld.gov.au/api/3/action/datastore_search?resource_id=346d58fc-b7c1- 
        4c38-bf4d-c9d5fb43ce7b')
            .then((response) => {
                const records = response.data.result.records;
                records.forEach((record) => {
                    axios.get('https://maps.googleapis.com/maps/api/geocode/json', {
                       params: {
                         address: record.address,
                         key: GOOGLE_KEY,
                      }
                   }).then(response => {
                      record.response.coordinate;
                      array.push(record);
    
                   });
    
            });
    
    我在想,是否可以根据响应对象的长度执行then((响应))n次?

    您可以利用它来实现期望的结果

    (async () => {
        const {
            data: {
                result: { records }
            }
        } = await axios.get(
            "https://www.data.qld.gov.au/api/3/action/datastore_search?resource_id=346d58fc-b7c1-4c38-bf4d-c9d5fb43ce7b"
        );
    
        const coordinates = await Promise.all(
            records.map(async (record) => {
                const response = await axios.get(
                    "https://maps.googleapis.com/maps/api/geocode/json",
                    {
                        params: {
                            address: record.address,
                            key: GOOGLE_KEY
                        }
                    }
                );
    
                return response.coordinate;
            })
        );
    })();