首页 存档 技术 查看内容

浅谈 JavaScript 异步编程中 Promise 的使用

2018-3-30 13:00 |来自: 互联网 274 0

摘要: Promise 是异步编程的一种解决方案。简单来说 Promise 就是一个容器,里面保存着某个未来才会结束的异步操作的结果。 从语法上说,Promise 是一个对象,通过它可以获取异步操作的消息。 在谈论 Promise 之前我们 ...

Promise 是异步编程的一种解决方案。简单来说 Promise 就是一个容器,里面保存着某个未来才会结束的异步操作的结果。


从语法上说,Promise 是一个对象,通过它可以获取异步操作的消息。



在谈论 Promise 之前我们先看一段代码:



在日常开发中,我们经常会处理一些异步操作,例如:发送 Ajax 请求,setTimeout 等。处理这些异步操作我们一般会传递一个回调函数,然而当我们要进行一连串的异步顺序操作的时候,回调代码就会自动往右边进行偏离,就像金字塔那样。相信你已经遇到过,这就是我们常常说的“金字塔回调”。


首先,从视觉看,金字塔回调会有多层的嵌套回调函数,结尾会有大量的花括号和圆括号,例如上述代码。并且,这样写出来的代码不优雅,阅读起来也比较费力,我们也无法在内部使用 throw new Error() 并在外部进行捕获异常。


Promise 的出现就是为了主要解决这两个主要问题:它可以让我们以同步的方式编写异步代码,同时我们也可以优雅的捕获错误和异常


Promise 最初起源于社区,现在已经被写入了 ES6 的规范中,并且主流浏览器都已经开始支持了,所以本文就介绍在代码中如何使用 Promise。


1创建Promise实例


Promise 是一个构造函数,使用时我们需要先使用 new 创建一个 Promise 实例。



在上面代码中我们可以看到:

1)构造函数接受一个函数作为参数,该函数有两个参数 resolve reject , 它们是两个函数。


2)resolve 函数与 reject 函数的作用:

  • resolve函数:将Promise对象的状态从 “未完成”变为 “成功”(Pending -

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部