ES6知识整理(8)--Promise对象

(关于promise,以前并不知道是什么,没这个概念。现在来学习总结下)


promise含义


es6的异步编程解决方案。需要new新对象操作api。

promise对象特点


有3中状态:pending(进行中)、fulfilled(已完成)、rejected(已失效),异步操作才有的状态。


2种状态的改变结果,称为:已定型(resolve):

image.png

即可将异步操作变为同步操作,避免层层嵌套回调函数。


promise缺点:

对象创建后会立即执行,中途不可中断。

不设置回调时,将抛出异常,不影响外部执行。

promise用法


使用方法:

image.png

resolve作用:pending-->resolved 传参:异步成功的data

reject作用:pending-->rejected 传参:error对象


image.png

若a=true;就会进resolve()函数,then中将会进data

若a=false;就会进reject()函数,then中将会进err。

promise执行顺序


对象.then()

image.png

log输出顺序:1 3 2


new之后直接.then()

image.png

log输出顺序:2 1


直接return resolve(),就只执行回调,后面的不再执行。

image.png

因为前面return了 所以只会输出1


异步操作例子


异步加载图片:

image.png

若图片路径存在,则输出value为img对象

若图片路径不存在或错误,则输出err为Error 加载失败


异步操作ajax:

json数据:

image.png

getJson函数带上参数url,可以返回该json数据。

若获取到数据,返回数据;

若访问不到数据,进入then的error,打印:

Error at XMLHttpRequest.xhr.onreadystatechange

image.png

调用getJson(url),then中成功则进data,失败则进err。

promise多重异步


创建一个promise的ajax

image.png


创建多重异步(2个then,第2个getJson使用return):

image.png

结果:

image.png

这个是简洁版本:

image.png

结果是一样的(两重异步):

image.png


Network中:

image.png


一句:别让自己的努力只是感动了自己。


----公众号:海瑞菌

posted @   herry菌  阅读(468)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
点击右上角即可分享
微信分享提示