1.什么是 promise?
它是 es6 提供的异步新的解决方案,没有 promise 的时候 JS 中的异步操作函数往往通过回
调函数来实现异步任务的结果处理;从语法上来说它是一个构造函数,可以实例化对象,
封装异步操作可以获取成功与失败的节点,其优点是支持链式调用,解决回调地狱,回
调函数方式更为灵活,减少嵌套
2.什么是异步?
同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高
3.异步使用场景?
网络请求,如 ajax 图片加载
定时任务,如 setTime
文件读取
4.什么是回调地狱?
回调函数嵌套调用,外部回调函数异步执行结果是嵌套的回调执行条件
5.回调地狱的缺点?
不利于阅读,不利于异常处理
6.promise 状态
实列对象中的一个属性【PromiseState/(sdt)】状态只有两种 pending=>resolved pending=>rejected
*pending 未决定
*resolved / fullfilled 成功
\*rejected 失败
7.promise 对象的值
实列对象中的另一个属性【PromsieResult】
保存着对象【成功、失败】的结果
8.promise api
promise (executor(rzkt))
executor 函数:执行器 (resolve,resject)=>{}
resolve 函数:内部定义成功是我们调用的函数 (value)=>{}
resject 函数:内部定义失败是我们调用的函数(err)=>{}
说明:executor 会在 promise 内部立即同步调用,异步在执行器里面执行
promise.prototype.then 方法:(onresolved,onresjectd)=>{}
onresolved 函数:成功回调函数
onresjectd 函数:失败回调函数
说明:then 方法会返回一个新的 Promise 实例,所以可以进行链式调用,
并且 then 方法接收的是成功还是失败可以通过上一个 Promise 的状态判断。
promise.prototype.catch()方法(onresjectd)=>{}
onresjectd 函数:失败回调函数
promise.resolve 方法:它是函数对象的并不属于实列对象
//如果传入的参数为非 promise 类型的对象,则返回的结果为成功的 promise 对象
//如果传入的参数为 promise 类型的对象,则参数的结果决定了 resolve 的结果
Promise.reject 方法: (reason) => {}
reason: 失败的原因
说明: 返回一个失败的 promise 对象
Promise.all 方法: (promises) => {}
promises: 包含 n 个 promise 的数组
说明: 返回一个新的 promise, 只有所有的 promise 都成功才成功, 只要有一个失败了就直接失败
Promise.race 方法: (promises) => {}
promises: 包含 n 个 promise 的数组
说明: 返回一个新的 promise, 第一个完成的 promise 的结果状态就是最终的结果状态