无法使request()在函数内工作

时间:2019-09-03 23:27:01

标签: javascript node.js ajax

我正在创建业务仪表板,并且需要从不同的API获取数据。

我正在使用Glitch.com进行构建,并require正在使用request模块来获取数据。这是项目的Glitch链接:https://glitch.com/edit/#!/achieved-icebreaker?path=server.js:2:0

当我在request中使用server.js时,它可以正常工作-但是,当我将它包装在函数中作为将其分成单独模块的先驱时,我只是无法使其正常工作!

理想情况下,我希望getCopper()返回一个数字。

我已经浏览了很多的Stack Overflow帖子,帮助资源等。

最初我只是得到:

Promise { <pending> }

然后我到达console.log(response.headers['x-pw-total']内的request输出所需结果的地步,但无法将其传递给return中的函数。

现在我可以说console.log(getCopper())返回了promise对象:

Promise {
  Request {
  domain: null,
  _events: 
   { error: [Function: bound ],
     complete: [Function: bound ],
     pipe: [Function] },
  _eventsCount: 3,
  _maxListeners: undefined,
  method: 'POST',
  headers: (etc etc)

这是我的代码:

async function getCopper() {
  return request({
    url: "https://api.prosperworks.com/developer_api/v1/companies/search",
    method: "POST",
    headers: {
      'X-PW-AccessToken': process.env.COPPER_KEY,
      'X-PW-Application': 'developer_api',
      'X-PW-UserEmail': process.env.COPPER_EMAIL,
      'Content-Type': 'application/json'
    },
    mode: "no-cors",
    body: JSON.stringify({
      'sort_by': 'name',
      'minimum_interaction_date': moment().subtract(90, 'days').unix(),
      'maximum_interaction_date': moment().unix()
    })
  }, function(error, response, body) {
    return response.headers['x-pw-total'];
  });
}

console.log(getCopper());

如何获取getCopper()来输出768

承诺让我的头受伤?


编辑:

我确实读过How do I return the response from an asynchronous call?(该问题已被标记为重复的问题),并且无法理解。

该代码使用try / catch,它们使用的是new Promisesuperagent库,而不是request

毫无疑问,它是有用的,但是我无法解释答案的哪些部分是有用和相关的,哪些部分是不相关的。

要使我的代码正常工作,我需要做什么?

0 个答案:

没有答案