它是一个ES6提出一个新语法,用来优化异步代码的写法。
- 在前端领域是我们必须要会的一个内容
- 后续的课程中也会多次使用
promise:承诺。
- 在ES6中,它是新增的构造器(Array, Object, Promise),用来优化实现异步操作。在没有它之前,javascript中的异步处理,大多是利用回调函数来实现的。典型的几种如下:(1)setTimeout (2)ajax 现在有了promise,就可以对这些异步操作进行改写了。
格式:
let p1 = new Promise((resolve, reject) => {
// resolve和reject是Promise内提供的2个函数, 用于回调返回结果到外面
resolve(成功结果) // 触发.then()小括号里函数体执行
reject(失败结果) // 触发.catch()小括号里函数体执行
})
p1.then((成功结果变量名) => {
}).catch((失败结果变量名) => {
}).finally(()=>{
// 一定会执行的代码
})
resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”,触发.then的执行
reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”,触发.catch的执行
Promise对象的三种状态:pending, fulfilled, rejected
Promise的all方法
Promise.all()
作用: 合并多个Promise对象, 等待所有成功后, 返回结果
语法: Promise.all([promise对象1, promise对象2, ...]).then()
特点: 返回最终结果是个数组, 值是按顺序对应小Promise对象的成功结果
注意: 如果有1个Promise失败, 则整个Promise对象则失败
let p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('成功1')
}, 2000)
})
let p2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('成功2')
}, 2000)
})
let p3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('成功3')
}, 2000)
})
Promise.all([p1, p2, p3]).then(res => {
console.log(res);
}) //合并并发多个Promise对象, 等待所有人成功, 按顺序接收结果
1193

被折叠的 条评论
为什么被折叠?



