美文网首页js深入JS笔记
JSdeep(异步就是设闹钟)

JSdeep(异步就是设闹钟)

作者: 余生筑 | 来源:发表于2017-11-29 20:16 被阅读17次

看这里

如果我想设计这样一个函数sleep(time),该函数执行效果是令js引擎进入为期为time的睡眠,睡眠结束后再继续执行任务

但是由于JS引擎是单线程的,它是个勤奋的急性子:有什么任务分配给他他就一定要做完才休息。所以我们为了达到实现"睡眠"的目的,有两种方法

  • 同步方法:"假休眠",让js一直"执行任务"。在time时间内JS一直做"看表等待"。直到time结束才开始干正事
function sleep(seconds, fn){
    setTimeout(fn, seconds * 1000)
}
console.log(1)
sleep(3, ()=> console.log('wake up'))
  • 异步方法:"真休眠",js让浏览器定一个time后响的闹钟,闹钟响后才开始给js分配任务。在time时间那段内由于js没有被分配任务,就会乖乖休息。
function sleep(seconds){
    var start = new Date()
    while(new Date() - start < seconds * 1000){
    }
    return
}
console.log(1)
sleep(3)
console.log('wake up')
同步时序图
异步时序图

回到最开始,我们为什么要让js睡一会儿呢?其实这是无奈之举,js确实很勤劳,是个急性子,但当分配给它的任务需要某种资源,而这种资源又需要一段时间才能拿到时,我们就必须设置闹钟,资源到位后再把该项任务分配给js

let liList = document.querySelectorAll('li')
for(var i=0; i<liList.length; i++){
    liList[i].onclick = function(){
        console.log(i)
    }
}

关键:js识别i(判断i的值)是在闹钟响起前还是后?
不会看这里

相关文章

  • JSdeep(异步就是设闹钟)

    看这里 如果我想设计这样一个函数sleep(time),该函数执行效果是令js引擎进入为期为time的睡眠,睡眠结...

  • JSdeep(闹钟如何设置)

    闹钟的作用是,当他响起时, js引擎被分配到某项任务 js拿到执行该项任务所需的资源。 要达到"闹钟"的效果,有以...

  • 设闹钟

    我总是陪睡,自己就睡着了。后半夜又无法入睡。想着这样并非好事。早晨又总是起不来!于是设了个闹钟。 可是闹...

  • 论如何设闹钟

    今天是早起的第二天,也是写东西的第一天。 人的潜力是无穷的,惰性也是无穷的。手环买回来好多天了,闹钟每天定四个,手...

  • 你设闹钟了吗?

    文盐五言六 你有设闹钟的习惯吗?闹钟可以让我们合理安排时间,让生活更加有序,更加丰富多彩。 设个闹钟就可以让自己睡...

  • 设闹钟的老师

    今早第一二节上的是自然科学,任课老师是四五十岁的男老师,说起话来铿锵有力。 自然科学基础这本书集物理、化学、生物、...

  • 给自己设个闹钟

    我是 Coco, 今天刚注册简书,给自己取个名叫'Coco要努力' 哈。我是天秤座,典型的纠结者,遇事总会考虑太多...

  • JSdeep(ajax)

    看这里碰到了疑惑时在点上面

  • JSdeep(new)

    等价于 就酱

  • 设个春天醒的闹钟

    能帮我设个闹钟不?好复杂我搞不来。 没问题,你准备啥时候醒? 春天

网友评论

    本文标题:JSdeep(异步就是设闹钟)

    本文链接:https://www.haomeiwen.com/subject/guppbxtx.html