美文网首页
8-异步操作

8-异步操作

作者: 少年啊兵 | 来源:发表于2018-10-24 15:31 被阅读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);

          });

    相关文章

      网友评论

          本文标题:8-异步操作

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