jQuery – 修改在 $.each() 中使用 AJAX 的方式

如果我們使用 $.each() 去做 AJAX,等候遠端回應有符合預期,才跳往下一個序列。這時候使用 $.each() 並不是一個好方式。我們先來看看在還不太了解異步處理的時候會發生的問題。

遠端 service.php

只有當拋來的值等於 c 會回傳 error。

 

1) 不建議的寫法

這個概念是:把蘋果分給4個人,只有 c 說你給錯了。

輸出

因為 jQuery 的 AJAX 預設是異步概念,所以當發現給錯的時候已經來不及了,並不能中止迴圈。

 

2) 建議的寫法

輸出

這個概念是:把蘋果先分給 a 然後 a 說沒問題,分給  b 然後 b 說沒問題;分給 c 然後 c 說你給錯了,所以程式終止迴圈。d 並不會被發到蘋果。 這個寫法如果要漂亮一點可以改成這樣

 

3) 不建議的同步寫法

如果把 AJAX 改成同步處理,確實也可以用 $.each() 做到第2點的方式,但是這會造成瀏覽器阻塞,用戶體驗差。所以強烈不建議這麼使用囉!看一下不建議的寫法怎麼寫

 

發表迴響