什么都不会的程序员

导航

promise理论

// 回调函数 被其他 函数嵌套使用的函数 (把函数当做一个参数传递给其他函数 并且执行)
// 很多回调函数嵌套 ===> 回调地狱
// 回调函数噩梦(恐怖回调),也被称为恶魔金字塔,指如ajax依赖调用时,回调函数会层层嵌套,而这种层层嵌套的写法,往往会让人难以理解,所以称之为噩梦
 
 
// Promise 异步 => 同步操作
// Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大
 
// 让代码更加简洁明了 后期更好的维护迭代
 
// 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果
 
// 从语法上说,Promise 是一个对象,从它可以获取异步操作的消息
 
// Promise 的状态
// pedding 进行中
// fulfilled 已成功 resolve
// rejected 已失败
 
// Promise对象有以下两个特点
// 1. 对象的状态不受外界影响 Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)
// 2. 一旦状态改变,就不会再变,任何时候都可以得到这个结果
// a. pedding => fulfilled => resolve 成功
// b. pedding => rejected => reject 失败
 
// 只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved
// Promise 构造函数
// var p = new Promise() // error 必须传递参数 成功失败结果
 
 
// 注:可以把Promise看成是状态机,当该Promise对象创建出来之后,其状态就是进行中pedding,
// 然后通过程序来控制到底是执行已完成,还是执行已失败。因为Promise处理的是异步任务,
// 所以我们还得对Promise做监听,当Promise的状态发生变化时,我们要执行相应的函数(then) 或者执行失败的函数(catch)
 
// resolve 成功回调
// reject 失败回调
// 函数 => 容器 => 存放执行某些异步事件的代码 => 异步操作
 
// 回调函数 页面加载会立即执行
 
// Promise 实例对象 有 then 方法 then方法是定义在原型对象 (prototype)
// p.then(callback1,callback2) 作用是为 Promise 实例添加状态改变时候的回调
// 当Promise 实例的状态 由 pedding(进行中) 改为 fulfilled(已成功) 则执行回调 callback1
// 当Promise 实例的状态 由 pedding(进行中) 改为 rejected(已成功) 则执行回调 callback2
 
// callback1 callback2 都是一个形式参数 p.then(success,failed) 接收Promise实例里面返回的数据
// callback1 可接收 resolve
// callback2 错误回调 可接收 reject 以抛错的形式传递数据
// callback2 接收 Promise 代码执行的语法错误 a = 100 ; key:key
 
// 总结 Promise 是异步编程 没有改变异步的本质 而是通过封装回调resolve reject 把代码给修改的更像同步函数

posted on 2021-09-21 12:40  什么都不会的程序员  阅读(45)  评论(0编辑  收藏  举报