亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問為什么 async 函數中的 await 不起作用?總是返回 undefined 。

請問為什么 async 函數中的 await 不起作用?總是返回 undefined 。

慕哥9229398 2019-07-26 23:49:16
代碼如下: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 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

你這個寫的問題太多了;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-26
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

感謝樓上各位的指導,問題解決,分享兩個解決方案第一個是在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-26
  • 2 回答
  • 0 關注
  • 1471 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號