[开发者心得] 休眠一秒的代码如何写(展示多种实现方式)

[复制链接]
1383 |2
二西莫夫 发表于 2023-4-24 18:58:15 | 显示全部楼层 |阅读模式
以下有5种写法:
1.使用 setTimeOut 方法实现(推荐)

方法1

方法1

测试代码

1测试代码

1测试代码

输出log:
log1:顺序1
log2:顺序3
log3:顺序2

2.使用 async\await 和 Promise(推荐)

方法2

方法2

测试代码,使用 await 等待了1秒

2测试代码

2测试代码

输出log:
log1:开始测试
log2:过了1秒
log3:测试结束

3.使用 Promise 和 setTimeOut 实现(推荐)

方法3

方法3

测试代码(可以看出,log的顺序和方法2不一致,因为没有使用 async 和 await)

我是1号

我是1号

输出log:
log1:我是1号
log2:我是3号
log3:我是2号

4.使用 Promise 和 setInterval 来实现(不推荐:setInterval是一个循环方法,这里需要clear,setTimeOut只会执行1次,建议使用setTimeOut)

方法4

方法4

测试代码

我是1号

我是1号

输出log:
log1:我是1号
log2:我是3号
log3:我是2号

5.使用 Date.now() 和 while 来实现(不推荐:占用CPU资源,阻塞代码)

方法5

方法5

请注意:使用Date来实现休眠方法,它会阻塞代码执行,占用CPU资源,建议使用以上推荐方法。
测试代码

1测试代码

1测试代码

输出log:
log1:顺序1
log2:顺序2
log3:顺序3





3测试代码

3测试代码
回复

使用道具 举报

喵喵哭唧唧 发表于 2023-4-24 19:06:50 | 显示全部楼层
TimeUtil.delaySecond(1)

大佬讲一讲内部封装的这个方法吧
回复

使用道具 举报

二西莫夫楼主 发表于 2023-4-25 09:06:25 | 显示全部楼层
喵喵哭唧唧 发表于 2023-4-24 19:06
TimeUtil.delaySecond(1)

大佬讲一讲内部封装的这个方法吧

好的,TimeUtil.delaySecond内部实现是和方法3一样的
回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表