前端异步

55 阅读2分钟

前言: javaScript是单线程的语言,一次只能进行一个任务,当前任务完成后进行下一个任务,多任务需要排队执行。但当任务增多,其中一。 个任务卡死,就会使浏览器也卡死。为此,JavaScript中的任务执行模式分为同步与异步。

同步任务: 单线程模式,前一个任务执行完成之后,才开始执行后一个任务,按照任务的排列顺序执行。

异步任务: 执行前一个任务时,不等此任务返回结果,为此任务设置一个处理代码,当此任务返回结果时,使用预先设置的处理代码处理返回结果。等待结果的同时,浏览器处理下一个任务。比如Ajax操作

前端异步解决方案

  1. 回调函数(callback): 函数A作为参数传递到函数B中,函数B执行函数A,函数A叫做回调函数。
  2. 事件监听: 任务的执行在于某事件是否发生

Promise(异步编程的一种解决方案): Promise对象用于对异步操作的最终结果的表示,用于处理异步操作,最终结果成功了就执行成功了的操作,失败了就执行失败了的操作。

new Promise(
    
    function(resolve, reject) {
        if (/* success */) {
            // ...执行代码
            resolve();
        } else { /* fail */
            // ...执行代码
            reject();
        }
    }
);

调用resolve方法Promise变为操作成功状态(fulfilled),调用reject方法后,Promise状态变为rejected,即操作失败状态

Promise对象的部分方法

  1. Promise.prototype.then(callback):Promise对象含有then方法,then()调用后返回一个Promise对象,意味着实例化后的Promise对象可以进行链式调用,而且这个then()方法可以接收两个函数,一个是处理成功后的函数,一个是处理错误结果的函数。
  2. Promise.prototype.catch(callback):catch()方法和then()方法一样,都会返回一个新的Promise对象,它主要用于捕获异步操作时出现的异常。