我正在创建业务仪表板,并且需要从不同的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 Promise
和superagent
库,而不是request
。
毫无疑问,它是有用的,但是我无法解释答案的哪些部分是有用和相关的,哪些部分是不相关的。
要使我的代码正常工作,我需要做什么?