Promise之什么是promise?(01)

什么是promise

1.promise是一门新技术(ES6规范)

2.promise是js进行异步编程时的新方案

为什么是新方案?

旧方案;都是回调函数

3.从语法上说 promise是一个构造函数

4.从功能上说promise对象用来封装一个异步编程并可以获取成活或者失败的结果值

异步编程

包括但不限于以下几种

1.fs (nodejs下面的一个模块,可以对磁盘下面的文件进行读取操作) 文件操作

复制代码
require('./index.html',(err,data)=>{}) 回调函数

2.数据库操作 (对mysql等数据库进行操作也是异步操作)

3.ajax

复制代码
$.get('/xxx/xxxApi',params,(data)=>{})
//'/xxx/xxxApi'是请求路径
//params 是请求参数 传参
//(data)=>{} 是回调函数

4.setTimeout

复制代码
setTimeout(()=>{},2000) 同样是回调函数

为什么要使用promise

1.可以链式调用,解决回调地狱的问题

什么是回调地狱?回调函数里面又套回调函数

复制代码
p1(opt,(params1)=>{
	p2(opt,(params2)=>{
		p3(opt,(params3)=>{
			p4(opt,(params4)=>{
				......
			})
		})
	})
})
这样还要每一个单独处理错误操作的代码,导致代码重复
------------------------------------------
//使用promise改造之后
// 用 Promise 链式调用,替代嵌套回调
p1(opt) // 第 1 步:执行 p1
  .then((params1) => { // params1 是 p1 resolve 的结果
    return p2(opt, params1); // 执行 p2,返回它的 Promise
  })
  .then((params2) => { // params2 是 p2 resolve 的结果
    return p3(opt, params2); // 执行 p3,返回它的 Promise
  })
  .then((params3) => { // params3 是 p3 resolve 的结果
    return p4(opt, params3); // 执行 p4,返回它的 Promise
  })
  .then((params4) => { // params4 是 p4 resolve 的结果
    console.log('最终结果:', params4); // 所有步骤完成
  })
  .catch((err) => { // 任何一步出错,都会跳到这里
    console.error('出错了:', err);
  });

2.更为灵活的调用回调函数

之前:要在启动异步函数之前调用回调函数

现在:先启动异步函数=>返回promise后=>在给promise绑定回调函数(也可以在异步任务结束后指定多个回调函数)

相关推荐
神探小白牙5 小时前
eCharts 多系列柱状图增加背景图
javascript·ecmascript·echarts
薛定猫AI11 小时前
【深度解析】Gemma Chat 本地 AI 编程 Agent:Electron + MLX + 开源模型的离线 Vibe Coding 实战
javascript·人工智能·electron
全栈前端老曹12 小时前
【前端地图】多地图平台适配方案——高德、百度、腾讯、Google Maps SDK 差异对比、封装统一地图接口
前端·javascript·百度·dubbo·wgs84·gcj-02·bd09
笑虾12 小时前
Win10 修改注册表 让鼠标悬停PNG上时 tip 始终显示分辨率
开发语言·javascript·ecmascript
雾岛听风69112 小时前
JavaScript基础语法速查手册
开发语言·前端·javascript
用户23678298016812 小时前
从零实现 GIF 制作工具:LZW 压缩与 Median Cut 色彩量化
前端·javascript
棉猴13 小时前
Python海龟绘图之绘制文本
javascript·python·html·write·turtle·海龟绘图·输出文本
Highcharts.js13 小时前
线形比赛积分增长或竞赛图|Highcharts企业图表代码示列
开发语言·前端·javascript·折线图·highcharts·竞赛图
让学习成为一种生活方式13 小时前
大肠杆菌合成扑热息痛--对乙酰氨基酚--文献精读227
开发语言·前端·javascript
多秋浮沉度华年14 小时前
electron 初始使用记录
javascript·arcgis·electron