一、前提了解----回调地狱:就是在 异步请求中 嵌套 异步请求
异步请求 嵌套 异步请求,页面结构繁琐。为了优化页面结构,在实现 异步程序依次执行
的基础上,还能写成同级结构形式。es6新增的Promise正是来解决回调地狱的。
二、Promise程序执行的具体步骤
1、使用JavaScript内置的构造函数Promise创建对象
const p=new Promise(function(r,f){
ajax({
url,
data,
dataType,
success:function(res){r(res)},
error:function(res){f(res)}
}) ;
})
p.then(function(参数){请求成功执行的程序})
p.catch(function(参数){请求失败执行的程序})
解释:
(1)构造函数的参数 是一个匿名函数。匿名函数中 设定 两个参数,参数1(一般为resolve)表示 执行成功 对应执行的函数程序。参数2(一般为reject)表示 执行失败 对应的函数程序。
(2)匿名函数中 设定要执行的异步程序,异步程序不是独立执行的异步程序,而是通过promise来帮助我们执行异步程序。(比如:ajax请求、定时器、延时器)
(3)p.then(function(参数){})设定 请求成功 执行的程序;
p.catch(function(参数){})设定 请求失败 执行的程序
2、Promise有三个执行状态(一个状态被触发,其他状态就不会触发了)
执行中(pending)
执行成功(fulfilled)
执行失败(rejected)