文章插图
Promise 是 CommonJS 中的规范,它能够帮助我们控制代码流程,避免函数的多层嵌套 。现在 Web 前端异步编程越来越普遍,它的出现让异步编程变得更佳的容易理解 。由于它越来越受到重视,ES6 已经开始支持它了 。
什么是 Promise?
Promise 是一种异步编程的模型 。它有三种状态:pending、resolved 和 rejected;一个 Promise 的状态只可能从 pending 转到 resolved 或者 rejected,不能逆向转换;同时 resolved 和 rejected 状态是不能相互转换的 。
Promise 必须实现 then 方法,then 方法可以接受两个回调函数,第一个是操作成功时(状态变为 resolved)的回调,第二个是操作失败时(状态变为 rejected)的回调 。
Promise 的优缺点:
- [优势]在异步编程中即保证代码简洁(避免嵌套),又让代码有异步运行的能力;
- [缺点]无法取消 Promise,一旦新建它就会立即执行,无法中途取消;
- [缺点]如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部;
- [缺点]当处于 Pending 状态时,无法得知目前进展到哪一个阶段;
Promise.prototype.then()
then 方法返回的是一个新的 Promise 实例,但是它并不是原来那个 Promise 实例 。这样就可以采用链式的写法,即 then 方法后面在调用另外一个 then 。
Promise.prototype.catch()
catch 方法是指发生错误时的回调函数:
Promise.all()
all 方法用于将多个 Promise 实例,包装成一个新的 Promise 实例 。
Promise.race()
race 方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例 。
Promise.resolve()
Promise.reject()
done()
finally()
【JavaScript 中对于Promise的理解】
推荐阅读
- 肤色不均怎么办?
- 芦荟有祛斑的功效吗
- 芦荟的美容功效是什么
- 芦荟有美白的功效吗
- 梦见自己全身陷入淤泥死亡 梦见自己全身陷入淤泥中
- 玻璃杯,品饮细嫩名贵绿茶 领略汤中茶趣
- 中国茶具企业,百炼成钢 主导市场
- 传承海堤精神 续写中国高端红茶史诗
- 帕萨特|帕萨特终生对手蒙迪欧停产 曾是史上研发最贵车型!仅剩中国特供
- 当代中国,茶艺活动方兴未艾