作者itisjoe ( _(:3」∠)_)
看板Ajax
标题Re: [问题] 如何在回圈中延迟?
时间Thu Jul 5 23:55:27 2018
把你的函式改成一个递回函式呢?
像是
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://webptt.com/cn.aspx?n=bbs/Ajax/M.1530806131.A.DE8.html
1F:→ ggbast: 感谢大大帮忙 :D 07/06 09:55
2F:推 ggbast: 这方法好像没办法确实的在每一次执行之间加入延迟,实际上 07/06 22:28
3F:→ 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
4F:推 eight0: 建议写成 setTimeout(someRecursive, 5000, cnt + 1) 07/07 01:51