JavaScript一般如何设置时序?

2013 年 6 月 26 日
 leohxj
比如我想依次执行,除了setTimeout,还有什么方式。
4276 次点击
所在节点    JavaScript
28 条回复
heroicYang
2013 年 6 月 27 日
@zhangxiao 恩,我理解的这种情况用setTimeout就可以了,你理解的情况用async库的waterfall或者series也可以轻松搞定。就看楼主具体的应用场景了~
heroicYang
2013 年 6 月 27 日
@zhangxiao 另外,我demo中也是前一个任务完了才执行后一个任务的哦。你吧setTimeout的延时全设成0就知道啦,哈哈。
zhangxiao
2013 年 6 月 27 日
@heroicYang 这... 那万一有个异步的调用... 你还是得嵌callback才行了...
heroicYang
2013 年 6 月 27 日
@zhangxiao 哈哈,那就async走起~
darasion
2013 年 6 月 28 日
转一篇 2009 年的文章:
http://www.laruence.com/2009/09/23/1089.html
bitsmix
2013 年 6 月 28 日
你们这些争论 setTimeout 真的没看过 javascript 秘密花园或者 the good parts 么
heroicYang
2013 年 6 月 28 日
@bitsmix 我想这里没有人争论吧?大家只是发表下各自的看法~
另,如果我没有记错的话, 《The Good Parts》里是没有讲定时器的~
DaniloSam
2013 年 6 月 30 日
注意setTimeout是异步的, 并且会受到单线程特性的影响, 所以如果你想精确的10秒后执行, 可能会有惊喜

算出一个函数的执行时间这事儿, 挺二的, 如果在任何环境执行时间都一样, 世界就没好了

可以想一下队列这玩意, 参考nodejs里next()如何实现的(想到而已, 卤煮可以看一下)
如果将你需要按顺序执行的函数 放到一个队列中 每一个执行完都next()一下, 这样根本无需关心某函数的执行时间
而有新的函数需要进入队列, 直接放到队尾即可

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/73741

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX