为了账号安全,请及时绑定邮箱和手机立即绑定

请问为什么 async 函数中的 await 不起作用?总是返回 undefined 。

请问为什么 async 函数中的 await 不起作用?总是返回 undefined 。

墨色风雨 2019-07-06 23:43:40
代码如下:asyncfunctiontest_async(){vartest_array=["a","b","c"];(functioniterator(i){if(test_array[i]=="c"){console.log(i);returni;}iterator(i+1);//迭代调用函数自身,执行下一个循环;})(0);}asyncfunctionGet_data(){console.log(test_async());vartemp_Variable=awaittest_async();console.log(temp_Variable);}Get_data();在win10平台下的node.js,CMD中执行文件后,总是返回
查看完整描述

2 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

你这个写的问题太多了;1:iterator没有执行2:就算执行了你也没有返回给外层函数,而是迭代中的某一个函数3:你这不是异步没必要用await4:递归中没有终止条件,程序会崩溃
asyncfunctiontest_async(){
vartest_array=["a","b","c"];
vara=null;
(functioniterator(i){
if(test_array[i]=="c"){
a="i";
}else{
iterator(i+1);
//迭代调用函数自身,执行下一个循环;
}
}
)(0);
returna
}asyncfunctionGet_data(){
vartemp_Variable=awaittest_async();
console.log(temp_Variable);
}
Get_data();
                            
查看完整回答
反对 回复 2019-07-06
?
RISEBY

TA贡献1856条经验 获得超5个赞

感谢楼上各位的指导,问题解决,分享两个解决方案第一个是在v2ex请教来的办法,采用returniterator(i+1)的方式。
asyncfunctiontest_async(){
vartest_array=["a","b","c"];
return(functioniterator(i){
if(test_array[i]=="c"){
console.log("test_async()函数内部"+i);
returni;
}
returniterator(i+1);//迭代调用函数自身,执行下一个循环;
})(0);
}
asyncfunctionGet_data(){
console.log(test_async());
vartemp_Variable=awaittest_async();
console.log(temp_Variable);
}
Get_data();
第二个是借助一个中间变量实现:@赵开开的办法:
asyncfunctiontest_async(){
vartest_array=["a","b","c"];
vara=null;//中间变量
(functioniterator(i){
if(test_array[i]=="c"){
a=i;
}else{
iterator(i+1);//迭代调用函数自身,执行下一个循环;
}
})(0);
console.log("test_async()函数内部:"+a);
returna;
}
asyncfunctionGet_data(){
console.log(test_async());
vartemp_Variable=awaittest_async();
console.log(temp_Variable);
}
Get_data();
                            
查看完整回答
反对 回复 2019-07-06
  • 2 回答
  • 0 关注
  • 338 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信