推 s25g5d4:你完全理解錯誤... 09/01 23:25
→ s25g5d4:asyncFunction 的 callback 裡改成 a += response 09/01 23:26
→ s25g5d4:另外就是這個response會沒有順序 因為你不能控制非同步 09/01 23:27
→ s25g5d4:函數執行的順序 09/01 23:27
→ s25g5d4: ^完畢 09/01 23:27
→ kewang:我一開始就是照樓上的這樣寫,不過L13依舊為空白 09/01 23:40
01 var a = "";
02
03 arrFoo.forEach(function(bar){
04 (function(){
05 asyncFunction(function(response){
06 a += response;
07 });
08 })();
09 });
10
11 alert(a);
一開始的寫法是這個樣子,結果L11一樣是顯示為空白 Orz
※ 編輯: kewang 來自: 220.134.3.53 (09/01 23:49)
推 s25g5d4:asyncFunction還沒全部跑完阿...加一個 i 當asyncFunction 09/01 23:50
→ s25g5d4:呼叫 callback 的時候 i+1 等到 i === arrFoo.length 09/01 23:50
→ s25g5d4:再 alert(a) 09/01 23:50
推 davidsky:如上所說L13執行時沒辦法保證asyncFunction已經執行 09/02 01:49
→ davidsky:處理非同步回呼建議用jquery defer 09/02 02:02
→ kewang:感謝樓上,我晚上再來試看看 09/02 13:10
→ kewang:我試過了確實可行,但原本的需求是L11後面還有一大堆要處理 09/02 21:55
→ kewang:的事情,現在看起來就是傳一個function到裡面去做了 09/02 21:55
推 StephenCurry:如果要這樣寫, 那alert(a)之前最好加一下保護機制 09/02 21:58
→ StephenCurry:不然很容易遇到傳入的變數不是預期的格式 09/02 21:58