8-异步操作

概述

单线程模型

JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待。

引擎有多个线程,单个脚本只能在一个线程上运行(称为主线程)。

同步任务和异步任务

同步任务是那些没有被引擎挂起、在主线程上排队执行的任务。只有前一个任务执行完毕,才能执行后一个任务。

异步任务是那些被引擎放在一边,不进入主线程、而进入任务队列的任务。

任务队列和事件循环

首先,主线程会去执行所有的同步任务。等到同步任务全部执行完,就会去看任务队列里面的异步任务。如果满足条件,那么异步任务就重新进入主线程开始执行,这时它就变成同步任务了。等到执行完,下一个异步任务再进入主线程开始执行。一旦任务队列清空,程序就结束执行。

异步操作的模式

    1、回调函数

    2、事件监听

    3、发布\订阅

异步操作的流程控制

如何确定异步操作执行的顺序?

串行执行;并行执行;并行与串行的结合


定时器


Promise

function test(resolve, reject) {

        var timeOut = Math.random() * 2;

        console.log('set timeout to: ' + timeOut + ' seconds.');

        setTimeout(function () {

            if (timeOut < 1) {

                console.log('call resolve()...');

                resolve('200 OK');

            }

            else {

                console.log('call reject()...');

                reject('timeout in ' + timeOut + ' seconds.');

            }

        }, timeOut * 1000);

      }

      new Promise(test).then(function (result) {

          console.log('成功:' + result);

      }).catch(function (reason) {

          console.log('失败:' + reason);

      });

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函...
    neromous阅读 12,776评论 1 56
  • 弄懂js异步 讲异步之前,我们必须掌握一个基础知识-event-loop。 我们知道JavaScript的一大特点...
    DCbryant阅读 7,654评论 0 5
  • 欢迎阅读专门探索 JavaScript 及其构建组件的系列文章的第四章。 在识别和描述核心元素的过程中,我们还分享...
    OSC开源社区阅读 4,834评论 1 10
  • 最近患了失语症。 不是说不会说话,而是忘记怎么表达了。 这种症状,从离开高中的时候就一直在渐渐加深。 我想,是因为...
    拾久阅读 3,730评论 0 50
  • 大脑分为左与右 左边称为学术脑 右边称为艺术脑 左脑分析语感强 右脑图像音律棒 左脑逻辑来推理 右脑想象来创造 左...
    淡定_7d51阅读 1,079评论 0 0