JavaScript Promise

JavaScript Promise

在现实生活中,Promise表达了两个或多个人之间的信任和对某个特定事情的确信。在JavaScript中,Promise是一个对象,它确保在将来(当需要时)产生一个单一的值。Promise在JavaScript中用于管理和处理异步操作。

JavaScript Promise的必要性

到目前为止,我们已经学习了处理数据的事件和回调函数。但是,它的作用范围有限。这是因为事件无法管理和操作异步操作。因此,Promise是处理异步操作的最简单和更好的方法。

Promise和事件处理程序之间可能存在两个不同之处:

  1. 一个Promise永远不能失败或成功两次或更多次。这只能发生一次。
  2. 一个Promise既不能从成功转到失败,也不能从失败转到成功。如果一个Promise已经成功或失败,并且在一段时间后添加了任何成功/失败回调,正确的回调将被调用,不管事件发生在之前是否。

Promise的术语

一个Promise可以处于以下任何一种状态:

  1. pending: Promise既没有被拒绝也没有被充实。
  2. fulfilled: 相关的Promise操作成功完成。
  3. rejected: 相关的Promise操作未能完成。
  4. settled: 操作被充实或被拒绝。

因此,Promise代表了一个异步操作的完成以及其结果。它可以是Promise的成功完成,也可以是Promise的失败,但最终是完成的。Promise使用 then() ,只有在Promise解决完成后才执行。

Promise的Promise

JavaScript的PromisePromise:

  1. 除非js事件循环的当前执行完成(成功或失败),否则回调在之前不会被调用。
  2. 即使回调函数包含then(),它们也只会在异步操作完全执行后才调用。
  3. 当通过多次调用then()添加多个回调时,它们将按照它们插入的顺序以链式方式执行,即一个接一个地执行。

Promise的方法

Promise的函数可以在几乎所有流行的Web浏览器上执行,如Chrome、Mozilla、Opera等。方法列表如下:

方法名称 摘要
Promise.resolve(promise) promise.constructor==Promise时,该方法只返回promise。
Promise.resolve(thenable) 从具有then()方法的thenable对象创建一个新的promise。
Promise.resolve(obj) 创建一个针对对象的resolved promise。
Promise.reject(obj) 创建一个针对对象的rejected promise。
Promise.all(array) 当数组中的每个项均被fulfilled时,创建一个resolved promise;当数组中的项未被fulfilled时,创建一个rejected promise。
Promise.race(array) 如果数组中的任何项被fulfilled,则立即resolve该promise;如果任何项被rejected,则立即reject该promise。

Promise 中的构造函数

new Promise(function(resolve, reject){}); 这里,resolve(thenable)表示promise将使用then()方法解决。 Resolve(obj)表示promise将被对象fulfilled。 Reject(obj)表示promise将被对象拒绝。

Promise实现

<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实现中,Promise构造函数接受一个回调函数作为参数。这个回调函数接受两个参数,即:

  1. 解决(Resolve): 当promise成功执行时,调用resolve参数,提供结果。
  2. 拒绝(Reject): 当promise被拒绝时,调用reject参数,导致错误。

这意味着要么调用resolve,要么调用reject。在这里,then()方法接受一个参数,如果promise被解决,将会执行该参数。否则,catch()方法将被调用,传入promise的拒绝结果。

使用Promise的优势

  1. 更好的处理异步操作的选项。
  2. 提供简单的错误处理和更好的代码可读性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程