注:转载请标明出处
为什么出现Promise
在javascript开发过程中,代码是单线程执行的,同步操作,彼此之间不会等待,这可以说是它的优势,但是也有它的弊端,如一些网络操作,浏览器事件,文件等操作等,都必须异步执行,针对这些情况,起初的操作都是使用回调函数实现。
实现方式如下(伪代码):
function One(callback) {
if (success) {
callback(err, result);
} else {
callback(err, null);
}
}
One(function (err, result) {
//执行完One函数内的内容,成功的结果回调回来向下执行
})
上述代码只是一层级回调,如果代码复杂后,会出现多层级的回调,代码可读性也会很差,那有没有一种方式,不用考虑里面的内容,直接根据结果成功还是失败执行下面的代码呢?有的,Promise(承诺),在ES6中对Promise进行了同意的规范。
Promise的含义
-
书上这么说:
Promise 是异步编程的一种解决方案,比传统的解决方案–回调函数和事件--更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了语法,原生提供了Promise
所谓Promise ,简单说就是一个容器,里面保存着某个未来才回结束的事件(通常是一个异步操作)的结果。从语法上说,Promise是一个对象,从它可以获取异步操作的消息。
Promise 对象的状态不受外界影响 -
Promise/a+ 官方网站给出的定义
A promise represents the eventual result of an asyncchronous operation翻译:表示一个异步操作的最终结果。
-
我的理解:
Promise是回调函数可以规范的链式调用
Promise原理与讲解
原理
- Promise的三种状态
- p