js中优雅的sleep

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fay_maplemei/article/details/80004597

第一种, 使用ajax同步调用后端的接口, 然后在后端进行sleep, 当然这种方式算不上优雅, 只能说是一种偷懒的方式. 注意 sleep的时间要小于timeout的时间, 不然会链接超时的…

第二种, 使用 Promise

async function test() {
  console.log('Hello')
  await sleep(1000)
  console.log('world!')
}

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

test()

第三种, 消耗CUP资源, 写死循环

function sleep(delay){
    var start = Date.now();
    while((Date.now() - start) < delay){}
}

//简单的test一下, 修改一下代码
function sleep(delay){
    var start = Date.now(), index = 0;
    while((Date.now() - start) < delay){index ++}
    console.log(index)
}
sleep(1000);
//最后发现index的值为 [7431528, 7582810, 7617151, 6259048, 7218395], 此处的数值和CPU有很大的关系
sleep(10000);
//当时间上升为10S时, 此时的页面是完全不可操作的状态, -_-, Pass 放弃这种方式

因为js本身就一个线程, 所以sleep并不是一种合适的手段, 如果有 链式 需求使用 PromisesetTimeout 就好了

所以在 javascript 优雅的写 sleep = 如何优雅的不优雅

展开阅读全文

没有更多推荐了,返回首页