JavaScript一般如何设置时序?

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

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

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

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

https://www.v2ex.com/t/73741

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

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

© 2021 V2EX