我正在尝试编写一个函数,该函数从Node上的ProductHunt API返回一系列 Vote 对象。 我可以访问这些对象,但是我不知道如何通过函数返回它们
var productHuntAPI = require('producthunt');
var productHunt = new productHuntAPI({
client_id: '123' ,// your client_id
client_secret: '123',// your client_secret
grant_type: 'client_credentials'
});
async function votesFromPage(product_id,pagenum){
var votes;
var params = {
post_id:product_id,
page:pagenum
};
productHunt.votes.index(params, async function (err,res) {
var jsonres= JSON.parse(res.body)
votes = jsonres.votes
console.log(votes)
})
return votes
}
async function main() {
var a = await votesFromPage('115640',1)
console.log('a is '+a)
}
main();
日志:
a未定义
[投票对象数组]
我希望var a包含投票对象,以便我可以使用
答案 0 :(得分:1)
然后您需要await
一个承诺。这样它才能获得投票并返回。
async function votesFromPage(product_id,pagenum){
var params = {
post_id:product_id,
page:pagenum
};
var votes = await new Promise((resolve, reject)=> {
productHunt.votes.index(params, async function (err,res) {
err && reject(err);
var jsonres= JSON.parse(res.body)
resolve(jsonres.votes)
});
});
return votes
}
编辑:
或者我们现在utils.promisify
做同样的事情
const productHuntPromise = utils.promisify(productHunt.votes.index);
var votes = await productHuntPromise(params)