8-异步操作

2018-10-24  本文已影响0人  少年啊兵

概述

单线程模型

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);

      });

上一篇下一篇

猜你喜欢

热点阅读