美文网首页
javascript线程部分知识点

javascript线程部分知识点

作者: edwin_hei | 来源:发表于2016-10-06 14:42 被阅读0次
    1. 单线程模型的含义
    2. 消息队列
    3. event loop
    4. 定时器
    5. setTimeout();
    6. setInterval();
    7. 正常任务与微任务
    8. javascript异步执行
    9. promise对象

    答案:

    1. 单线程模型指的是javascript只在一个线程上运行,javascript同时只能执行一个任务,其他任务必须排在后面等待执行.
      事实上javascipt只在一个线程上运行,不代表javascript引擎只有一个线程.javascript引擎有多个线程,单个脚本只能在一个线程上运行,其他线程都是在后台配合.
    2. javascript运行时,除了一根运行线程,引擎还提供了一个消息队列(message queue),里面是各种需要当前程序处理的消息,新的消息进入队列的时候,会排在队列的尾端.
      运行线程只要发现消息队列不为空,就会取出在第一位的消息,执行对应的回调函数,进入消息队列的消息,必须有回调函数,否则这个消息就会遗失.
    3. 所谓event loop机制,指的是一种内部循环,用来一轮又一轮的处理消息队列中的消息,即执行对应的回调函数.
    4. javascript提供定时执行代码的功能,叫做定时器,主要由setTimeout()和setInterval()这两个函数来完成.他们向任务队列添加定时任务
    5. var timeId = setTimeout(func|code,delay);
      除了前两个参数,setTimeout还支持添加更多的参数,他们将被传入推迟执行的函数(回调函数).
    6. setIterval()省略...
    7. 正常人任务task与微任务microtask.他们的区别在于,正常任务下一轮event loop执行,微任务在本轮event loop的所有任务结束后执行.定时器是正常任务,promise是属于微任务
    8. 回调函数进行异步执行,事件监听,发布/订阅
    9. promise是commonJS工作组提出的一种规范,目的是为异步操作提供统一接口
      比如,异步操作f1返回一个promise对象,他的回调函数f2写法如下:
    (new Promise(f1)).then(f2);
    

    promise对象只有三种状态

    异步操作未完成pending
    异步操作已完成resolved
    异步操作失败rejected
    这三种状态只有两种变化途径:
    从未完成到失败-->rejected
    从未完成到成功-->resolved

    Promise对象的生成
    ES6提供了原生的Promise构造函数,用来生成Promise实例

    var promise = new Promise(function(resolve,reject){
      //  异步操作的代码
      if(成功){
        resolve(value);
      }else{
        reject(error);
      }
    });
    

    相关文章

      网友评论

          本文标题:javascript线程部分知识点

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