代码如下: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();
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();
添加回答
举报
0/150
提交
取消