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

有没有童鞋遇到过同样的问题:请问为什么 async 函数中的 await 不起作用?总是返回 undefined 。

有没有童鞋遇到过同样的问题:请问为什么 async 函数中的 await 不起作用?总是返回 undefined 。

浮云间 2019-09-09 21:41:21
代码如下: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 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

你这个写的问题太多了;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-09-09
?
侃侃无极

TA贡献2051条经验 获得超10个赞

分享两个解决方案第一个是在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-09-09
  • 2 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

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