我希望每次执行延迟的秒数都不一样
例如 setInterval(function(){}, 1 秒) //第一次 setInterval(function(){}, 2 秒) //第二次
感谢~
1
jtsai OP 我讲明白我要干什么了吗 哈哈
|
2
jtsai OP 或者传授我 JavaScript 怎么 死循环 然后在循环里面实现像 Python 一样的同步 sleep 功能。这家伙异步来异步去的 不知道在搞什么
|
3
chemzqm 2017-03-23 16:18:22 +08:00
setTimeout 套 setTimeout
|
4
jtsai OP @chemzqm setTimeout 没有循环功能啊? 在 setInterval 里面执行 setTimeout 。 setInterval 不管你 异步继续循环
|
5
izhaohui 2017-03-23 16:24:15 +08:00 via Android 1
感觉你还是适应一下异步吧,每个语言有每个语言的套路, nodejs 的话还好,你要是在 web 端来个死循环, UI 就不用渲染了
|
6
chemzqm 2017-03-23 16:25:13 +08:00 1
setTimeout 内的函数递归调用自己
|
8
Colorful 2017-03-23 16:32:32 +08:00 1
有两个方法吧,一个是加一个缓存,然后每次取出的时候,缓存加 1
另外一个方法是从后台那边取值... 能想到的就这两个方法吧 |
10
jtsai OP @Colorful 而且不知道怎么配置值 我想搞的数组去 pop , setInterval 读取一次延迟秒数 然后就按照这个死循环了,不继续 pop 了
|
11
jimliang 2017-03-23 17:08:35 +08:00 2
```
var exec = (func, interval = 1000) => setTimeout(() => (func(), exec(func, interval * 2)), interval) exec(function () { console.log(new Date().getSeconds()) }) ``` |
13
shyling 2017-03-23 17:41:05 +08:00
本来就不准确(雾
|
14
xycool 2017-03-23 17:41:51 +08:00 1
var c=0
var t function timedCount() { console.log(c); c=c+1 t=setTimeout("timedCount()",c*1000); } timedCount(); |
16
Sparetire 2017-03-23 21:36:29 +08:00 1
如果可以 es6/es7 的话,可以这样
``` function wait(time) { return new Promise(rs => setTimeout(rs, time)); } async function run() { for (let i = 0;; ++i) { console.log(i); await wait(1000 * i); } } run(); ``` |
17
Sparetire 2017-03-23 21:41:03 +08:00
没有 es6 的话就这样
``` var interval = 1000, i = 1; setTimeout(function () { console.log(i++); setTimeout(arguments.callee, interval * i); }, interval); ``` |
18
zingl 2017-03-23 22:46:14 +08:00 1
var c = 1000; var i = setInterval(k, 1000); function k() {console.log(c); clearInterval(i); c += 1000; i = setInterval(k, c);}
|
19
Parabolazz 2017-03-24 00:06:52 +08:00 via Android
用闭包即可解决
|