promise总结
1,promise的语法
新建一个promise对象, 参数是回调函数, 回调函数有两个参数
var promise = new Promise(resolve.reject){
在resolve 和 reject 也是两个函数,
在promise对象中开始一个异步操作
fs.readFile(path,function(err,data){
if(err) reject('失败了',err.message) // 如果错误,执行reject函数,实参是 ‘失败了’,失败信息
else resolve('成功了',data) // 如果成功,执行resolve函数,实参是 ‘成功了’,成功的数据
})
}
promise.then(function(data){
console.log(data)
},function(err){
console.log(err)
})
注意:
// 1, 成功的回调函数resolve是必选的,必须在then中传入, 失败的回调函数reject是可选的, 可以省略
// 2, then函数获取promise异步结果不管在任何时间,任何位置调用, 不管调用多少次, 总能拿到异步结果
注意: promise中的异步任务是在new创建是直接开始执行的, then函数只是读取异步结果, 而不是开始执行异步请求
2,promise的用法:
(1)使用promise解决多异步任务并发执行问题
Promise 中提供了两个类方法: all race
把多个promise对象合并成一个, 参数是数组,数组中放多个promise实例, 返回一个新的promise对象
var mergeP = Promise.all([p1,p2,p3,p4])
all类方法 使用合并后的对象调用then获取所有promise的结果, 结果是一个数组,结果数组中数据顺序和all参数顺序保持一致 (注意不是按照执行结束的先后顺 序排列)
mergeP.then(function(dataArr){
console.log(4, dataArr.join(""))
})
// all: 当合并的所有promise全部完成之后, 才会执行then回调,拿到所有结果
// race: 任意一个合并的promise任务完成, 立即调用then回调, 只能拿到这一个结果:饱和式救援
类方法: 使用 类名如:Object 直接调用的方法 如: Promise.all() Promise.race()
// 实例方法: 创建出来的对象obj调用的方法 如 : p1.then(), p1.catch()
总结: promise的两个主要用法
1, 解决多异步任务多层嵌套问题
2, 解决多异步任务并发问题
3.promise的原理:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构