Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在回调后将值返回主函数_Javascript_Node.js_Async Await - Fatal编程技术网

Javascript 如何在回调后将值返回主函数

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投票; 变量参数

我试图编写一个函数,从节点上的ProductHunt API返回一系列投票对象。 我可以访问这些对象,但我不知道如何将它们作为函数的结果返回

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希望使用异步/等待,而不是回调