javascript - 如何在 node.js 中使用 promise 函数的返回值

标签 javascript node.js

<分区>

我想编写一个函数,从 node.js 中的 google places API 返回数据。该函数定义如下:

function getAddress(placeName) {
  return new Promise((resolve, reject) => {
    return axios.get('https://maps.googleapis.com/maps/api/geocode/json?address=' + placeName + '&key=MyAPIKey').then(response => {
      const placeID = response.data.results[0].place_id
       return axios.get('https://maps.googleapis.com/maps/api/place/details/json?placeid=' + placeID + '&key=MyAPIKey').then(response => {
          resolve(response.data.result)
          return response.data.result // here i would like to return the data.result
        }).catch(err => {
          console.error(err);
        });
    }).catch(err => {
      reject(err);
    });
  });
}

我想使用这个函数并得到一个返回值。我已尝试使用下面的代码,但出现错误“Promise pending”

const address = getAddress('someName').then(address => {
    phone: address.formatted_phone_number
  }).catch(err => {
    console.error(err)
  })

那么我该如何构造函数,让它返回数据呢?

最佳答案

在你解决你的 promise 之前,你正在返回 axios.get 的结果,所以它永远不会解决。您应该只返回 resolve/reject,任何其他内容和您的 promise 永远不会 resolve(除非在您返回之前调用了 resolve/reject)。

function getAddress(placeName) {
  return new Promise((resolve, reject) => {
    axios.get('https://maps.googleapis.com/maps/api/geocode/json?address=' + placeName + '&key=MyAPIKey').then(response => {
      const placeID = response.data.results[0].place_id
       axios.get('https://maps.googleapis.com/maps/api/place/details/json?placeid=' + placeID + '&key=MyAPIKey').then(response => {
          return resolve(response.data.result)
        }).catch(err => {
          return reject(err)
        });
    }).catch(err => {
      return reject(err);
    });
  });
}

关于javascript - 如何在 node.js 中使用 promise 函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45242818/

相关文章:

node.js - 接收捕获异常: Error: listen EACCES while running gulp

Node.js - 以 CPU 核心为目标

javascript - 对象问题中的 Jquery 对象

javascript - 如何在不同的浏览器中使用 DOM 内部的 activeElement.tagName ?

javascript - 有没有办法在 Pikaday 中取消选择日期?

javascript - Express-validator 在异步验证中不返回对象

javascript - CommonJs模块系统中 "module.exports"和 "exports"之间的区别

javascript - mysql查询进度条与php和bootstrap

javascript - 如何找到元素相对于浏览器窗口的坐标

node.js - Mongodb未创建数据库