ES6新增的一个重要的语法

专门来执行异步程序
将异步程序,按照顺序来一个一个的执行

promise的基本语法形式:

promise 是 一个构造函数 用于创建一个 实例化对象

实例化对象有三个 状态

pedding   执行状态      表示 异步请求正在执行
resolved  执行成功状态  表示 异步请求执行成功
rejected  执行失败状态  表示 异步请求执行失败

实例化对象中

.then()   对应的就是 执行成功时 执行的回调函数
.catch()  对应的就是 执行失败时 执行的回调函数

基本步骤:

先创建一个实例化对象,通过 .then()  和 .catch() 来定义要执行程序
效果:将要执行的异步回调程序,定义在了函数之外
形成了一个类似于 同步程序执行的效果

实例

    // 使用 promise() 构造函数,生成一个实例化东西
    // resolved  对应程序执行成功的回调函数
    // rejected  对应程序执行失败的回调函数
    const p = new Promise(function(resolved,rejected){
        // 定义异步程序
        const xhr = new XMLHttpRequest();
        xhr.open('get', `./demo1.php?a1=100&b1=200`);
        xhr.send();
        xhr.onload = function () {
            // 当请求结束,请求成功,执行成功的回调函数
            resolved(JSON.parse(xhr.response));
        }
        // 当前 resolved 和 rejected 还只是形参,没有实际的程序内容
        // 需要通过 p1.then()  来定义 resolved 执行的程序
        // 需要通过 p1.catch() 来定义 rejected 执行的程序
    });
    
    // 通过 then() 来定义 resolved() 的程序内容 
    p.then(function (data1) {
        // 另异步一个程序
        console.log(data1)   // 定义 的 参数 data 实参,就是我们执行 resolved() 时 输入的  JSON.parse( xhr1.response )
    })

promise 的本质

将 异步请求 执行成功 或者 执行失败 时 执行的程序代码
通过 两个形参  resolved   rejected
在 异步程序之外 通过 .then()  和  .catch 来 定义
形式上 是 讲 请求 和 请求成功之后 执行的程序 分开定义
效果看似是 将 程序 分成了 2个部分
本质上 对于 异步程序执行 没有改变

对于 promise 我们了解 核心思想就可以了

先定义一个 实例化对象Promise() 构造函数 有两个 形参
第一个对应请求成功执行的函数程序
第二个对应请求失败执行的函数程序
请求成功使用 promise对象.then()  来定义
请求失败使用 promise对象.catch() 来定义

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。