ECMAScript - Promise 笔记
Promise
Promise用于封装和处理异步操作。
相关的资料网上一大堆,所以只记录一些细节。
创建Promise实例
const promise = new Promise((resolve, reject) => {
fs.readFile("./test", (err, data) => {
if(err) {
reject(err)
return
}
resolve(data.toString())
})
})
注意:Promise对象创建即运行,所以将这个过程封装在函数中,随函数调用触发。
Promise三个状态
pending:待定状态
fulfiled:执行resolve()后的状态
rejected: 执行reject()后的状态
then()方法
参数:
then(onResolve, onReject)
then()方法确实会继续返回一个Promise对象,但是如果then()传入的回调函数并不返回一个Promise对象,
那链式调用then()也没什么意义。
比如这里要进行一个顺序读取文件的操作:
// 这里我们让每个then再次返回一个Promise对象
readFile("1")
.then((res) => {
console.log(res)
return readFile("2")
})
.then((res) => {
console.log(res)
return readFile("3")
})
.then((res) => {
console.log(res)
})
// 错误的写法,这样之后的then就不是异步的,必须让then的回调再次返回一个Promise对象
readFile("1")
.then((res) => {
console.log(res)
readFile("2")
})
.then((res) => {
console.log(res) // undefined
readFile("3")
})
所以如果要按顺序使用then进行链式处理,请保证每个then方法的回调函数都返回一个Promise实例。
附录: 轻轻地摇
分类:
ECMAScript
标签:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!