Promise 基本了解和使用
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
Promise有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。
Promise的状态不受外界影响。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。
Promise的状态一旦状态改变,就不会再变。如果改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。
Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。
Promise.all()方法只适合所有异步操作都成功的情况,如果有一个操作失败,就无法满足要求。
const p = Promise.all([p1, p2, p3]);
只有p1、p2、p3的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值组成一个数组,传递给p的回调函数。
只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。
new Promise(function (resolve, reject) {
resolve('success1')
}).then(function (res) {
console.log(11, res)
return new Promise(function (resolve, reject) {
resolve('success2')
})
}).then(function (res) {
console.log(22, res)
return new Promise(function (resolve, reject) {
// resolve('success3')
reject('fail')
// 下面3 4都不会继续执行,promise的状态一旦确定,不在更改
// 即使下面再抛出reject,也不会执行,只会以第一个reject为主
})
}).then(function (res) {
console.log(33, res)
return new Promise(function (resolve, reject) {
resolve('success4')
})
}).then(function (res) {
console.log(44, res)
}).catch(function (error) {
console.log(error)
})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器