Javascript 如何在回调后将值返回主函数
我试图编写一个函数,从节点上的ProductHunt API返回一系列投票对象。 我可以访问这些对象,但我不知道如何将它们作为函数的结果返回Javascript 如何在回调后将值返回主函数,javascript,node.js,async-await,Javascript,Node.js,Async Await,我试图编写一个函数,从节点上的ProductHunt API返回一系列投票对象。 我可以访问这些对象,但我不知道如何将它们作为函数的结果返回 var productHuntAPI=require('producthunt'); var productHunt=新的productHuntAPI({ 客户id:'123',//您的客户id 客户机密:“123”,//您的客户机密 授予类型:“客户端凭据” }); 异步函数votesFromPage(产品id,pagenum){ var投票; 变量参数
var productHuntAPI=require('producthunt');
var productHunt=新的productHuntAPI({
客户id:'123',//您的客户id
客户机密:“123”,//您的客户机密
授予类型:“客户端凭据”
});
异步函数votesFromPage(产品id,pagenum){
var投票;
变量参数={
post_id:product_id,
页码:pagenum
};
productHunt.vows.index(参数,异步函数(err,res){
var jsonres=JSON.parse(res.body)
投票数=jsonres.voces
console.log(投票)
})
返回投票
}
异步函数main(){
var a=等待votesFromPage('115640',1)
console.log('a is'+a)
}
main();
日志:a未定义
[投票对象数组]
我希望var a包含投票对象,这样我就可以使用它了您需要等待承诺。这样它就能得到选票并返回
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)
你没有。相反,将依赖于结果的逻辑移动到从客户端回调函数中调用的函数中。将回调函数设置为
异步函数
没有帮助。相反,你需要这样做,这样你才能等待承诺then@DaiOP希望使用异步/等待,而不是回调