如何在回调后将值返回给main函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在回调后将值返回给main函数相关的知识,希望对你有一定的参考价值。
我正在尝试编写一个函数,该函数从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包含投票对象,所以我可以使用它
答案
你需要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)
以上是关于如何在回调后将值返回给main函数的主要内容,如果未能解决你的问题,请参考以下文章