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() 来定义
Comments | NOTHING