Javascript 等待函数未等待并传递到下一行
我创建了一个基本函数,它调用另一个函数,该函数应该返回一个结果,然后我想从主函数中记录它,但当我这样做时,它只是不等待和记录(未定义),也不等待结果到达Javascript 等待函数未等待并传递到下一行,javascript,node.js,async-await,Javascript,Node.js,Async Await,我创建了一个基本函数,它调用另一个函数,该函数应该返回一个结果,然后我想从主函数中记录它,但当我这样做时,它只是不等待和记录(未定义),也不等待结果到达 const returnBool=async()=>{ const googleData=wait getData(); console.log(谷歌数据); }; 常量getData=()=>{ 谷歌趋势 .interestOverTime({关键字:`Test`}) .然后(函数(结果){ 控制台日志(结果); 返回结果; }) .cat
const returnBool=async()=>{
const googleData=wait getData();
console.log(谷歌数据);
};
常量getData=()=>{
谷歌趋势
.interestOverTime({关键字:`Test`})
.然后(函数(结果){
控制台日志(结果);
返回结果;
})
.catch(函数(err){
console.error('哦,不,有个错误',err);
});
};
您的getData
函数不会返回承诺,因此(a)等待它不会有多大作用<因此,代码>谷歌数据
在您尝试将其记录到控制台时仍然未定义
例如,尝试将getData
代码包装到承诺中,如下所示:
const getData=()=>{
返回新承诺((解决、拒绝)=>{
谷歌趋势
.interestOverTime({关键字:`Test`})
.然后(函数(结果){
返回解析(结果);
})
.catch(函数(err){
退货拒绝(err);
});
});
}
另外,我建议添加一个试试。。。catch
块到第一个异步函数,如下所示
const returnBool=async()=>{
试一试{
const googleData=wait getData();
console.log(谷歌数据);
}捕获(ex){
}
};
实际上,根据您实际要执行的操作,您可以在此处保存一些行,并删除以下附加功能:
const returnBool=async()=>{
试一试{
const googleData=等待googleTrends.interestOverTime({关键字:'Test'});
返回谷歌数据?真:假;
}捕获(ex){
/*错误处理*/
返回错误
}
}
如果可以的话,让我再提一件事returnBool
对于函数来说并不是一个好名字。试试更具描述性的东西,比如
const关键字hasdata=async(关键字)=>{
//…等待googleTrends.interestOverTime({keyword});
}
您忘记了getData
中的return语句,请删除花括号或在lambda中添加return。目前您的功能似乎没有回报承诺。让我建议自己感谢您;P