本文概要
在现实生活中的承诺表达两个或两个以上的人,并保证,特定的事情一定会发生之间的信任。在JavaScript中,一个Promise是一个对象,它可确保(当需要时)在未来以产生单个值。承诺在JavaScript用于管理和解决异步操作。
需要JavaScript的承诺
到现在为止,我们了解事件和回调函数来处理数据。但是,它的范围是有限的。这是因为事件是无法管理和操作异步操作。因此,承诺是有效地处理异步操作最简单,更好的方法。
有承诺和事件处理程序之间有两个可能的不同:
- 一个承诺决不会失败或成功,两次或更多次。这只能发生一次。
- 承诺可以从成功到失败,或未能成功切换没有。如果已承诺无论成功或失败,和一段时间后,如果添加任何成功/失败的回调,正确的回调将被调用,不管事件发生的更早。
Promise的术语
一诺可在下列状态中的一种存在:
- 挂起:挂起的承诺既不拒绝,也不尚未完成。
- 完成:在相关承诺行动圆满完成。
- 拒绝:相关承诺的行动未能兑现。
- 解决:要么行动履行或拒绝。
因此,一个承诺表示其结果的异步操作的完成。它可以是承诺要么成功完成,或未能,但最终完成。Promise采用然后只承诺决心完成后执行()。
承诺的承诺
一个JavaScript承诺承诺是:
- 除非JS事件循环的当前执行的未完成(成功或失败),回调将永远不会被以前叫。
- 即使有那么()的回调都存在,但他们只会完全异步操作的执行后调用。
- 当多个回调可以通过调用然后()多次被包括,他们每个人都会在一个链来执行,即,一个在另一个之后,以下它们被插入的序列。
在Promise方法
承诺的功能是可执行的,几乎在每一个趋势的Web浏览器,如浏览器,Mozilla,Opera等的方法列表:
方法名称 | 摘要 |
---|---|
Promise.resolve(promise) | 这个方法只有在promise.constructor== promise时才返回promise。 |
Promise.resolve(thenable) | 对包含then()的thenable进行新的承诺。 |
Promise.resolve(obj) | 使解决的对象的承诺。 |
Promise.reject(obj) | 做出拒绝的承诺。 |
Promise.all(数组) | 在数组中的每个项都已完成时解析承诺,或在数组中的项未完成时拒绝承诺。 |
Promise.race(array) | 如果阵列中的任何一项得到满足,尽快,它解决的承诺,或者如果发现任何项目,一旦被拒绝,就拒绝承诺。 |
构造函数 – 承诺
new Promise(function(resolve,reject){}); | 这里,resolve(thenable)表示使用then()解析承诺。 解析(obj)表示承诺将通过对象实现 Reject(obj)表示被对象拒绝的承诺。 |
实现承诺
<html>
<head>
<h2> Javascript Promise</h2>
</br> </head>
<body>
<script>
var p=new Promise(function(resolve,reject){
var x= 2+3;
if(x==5)
resolve(" executed and resolved successfully");
else
reject("rejected");
});
p.then(function(fromResolve){
document.write("Promise is"+fromResolve);
}).catch(function(fromReject){
document.write("Promise is "+fromReject);
});
</script>
</body>
</html>
在上述承诺的实现,Promise构造函数采用的是回调函数的参数。这个回调函数有两个参数,即,
- 解析:当成功执行的承诺,决心参数调用,它提供的结果。
- 拒绝:当许被拒绝时,拒绝参数被调用时,其将导致一个错误。
这意味着要么解决被称为或拒绝被调用。在这里,那么()已采取一个参数,它会执行,如果承诺得到解决。否则,赶上()将拒绝承诺的调用。
使用承诺的优点
- 一个更好的选择来处理异步操作。
- 提供了方便的错误处理和更好的代码的可读性。
评论前必须登录!
注册