什么是Promise
首先让我们来了解一下到底什么是Promise。
Promise是抽象异步处理对象以及对其进行各种操作的组件。
其详细内容在接下来我们还会进行介绍,Promise并不是从JavaScript中发现的概念。
Promise最初被提出是在 E语言中,
它是基于并列/并行处理设计的一种编程语言。
现在JavaScript也拥有了这种特性,这就是本书所介绍的JavaScript Promise。
另外,如果说到基于JavaScript的异步处理,我想大多数都会想到利用回调函数。
使用了回调函数的异步处理
----
getAsync("fileA.txt", function(error, result){// <1>
if(error){// 取得失败时的处理
throw error;
}
// 取得成功时的处理
});
----
<1> 传给回调函数的参数为(error对象, 执行结果)组合
Node.js等则规定在JavaScript的回调函数的第一个参数为 Error
对象,这也是它的一个惯例。
像上面这样基于回调函数的异步处理如果统一参数使用规则的话,写法也会很明了。
但是,这也仅是编码规约而已,即使采用不同的写法也不会出错。
而Promise则是把类似的异步处理对象和处理规则进行规范化,
并按照采用统一的接口来编写,而采取规定方法之外的写法都会出错。
下面是使用了Promise进行异步处理的一个例子
----
var promise = getAsyncPromise("fileA.txt"); // <1>
promise.then(function(result){
// 获取文件内容成功时的处理
}).catch(function(error){
// 获取文件内容失败时的处理
});
----
<1> 返回promise对象
我们可以向这个预设了抽象化异步处理的promise对象,
注册这个promise对象执行成功时和失败时相应的回调函数。
这和回调函数方式相比有哪些不同之处呢?
在使用promise进行异步处理的时候,我们必须按照接口规定的方法编写处理代码。
也就是说,除promise对象规定的方法(这里的 then
或 catch
)以外的方法都是不可以使用的,
而不会像回调函数方式那样可以自己自由的定义回调函数的参数,而必须严格遵守固定、统一的编程方式来编写代码。
这样,基于Promise的统一接口的做法,
就可以形成基于接口的各种各样的异步处理模式。
所以,promise的功能是可以将复杂的异步处理轻松地进行模式化,
这也可以说得上是使用promise的理由之一。
接下来,让我们在实践中来学习JavaScript的Promise吧。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。