看板 Ajax 關於我們 聯絡資訊
把你的函式改成一個遞迴函式呢? 像是 function someRecursive(cnt) { /* do something */ if (cnt < 999) { setTimeout(someRecursive(cnt + 1), 5000) } } 之類的 ※ 引述《ggbast (GG)》之銘言: : 最近剛踏入javascript的領域 : 我想在一個迴圈中重複執行某一個function : 這個function是個同步函數 : 我希望每次都做完這個function才延遲 : 大概像是下面這樣 : while (cnt<999) { : function() : delay() : cnt++ : } : 我試過了setTimeout 結果跟預期的不同 : 用了promise跟then的作法也是不如預期 : 請問各位大神有什麼方法可以做到我要的效果呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.50.145.214 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1530806131.A.DE8.html
ggbast: 感謝大大幫忙 :D 07/06 09:55
ggbast: 這方法好像沒辦法確實的在每一次執行之間加入延遲,實際上 07/06 22:28
ggbast: 會全部同時做並在延遲後一次將所有結果輸出 07/06 22:28
上面原文我沒有寫可以正確執行的程式 直接複製貼上會不能用 setTimeout() 的第一個參數 這個函式要用引號 " 括起來 如下 function someRecursive(cnt) { /* do something */ if (cnt < 999) { setTimeout("someRecursive("+(cnt + 1)+")", 5000) } } 這樣應該就可以了 ※ 編輯: itisjoe (110.50.145.214), 07/07/2018 00:44:41
eight0: 建議寫成 setTimeout(someRecursive, 5000, cnt + 1) 07/07 01:51