📜  javascript中的承诺是什么(1)

📅  最后修改于: 2023-12-03 15:01:48.002000             🧑  作者: Mango

JavaScript中的承诺是什么?

JavaScript中的承诺(Promise)是一种处理异步操作的方法。它允许您按照顺序执行代码,而无需等待其它代码告诉您它们已经完成。这使得异步代码更加易于编写和理解。

基本语法

在JavaScript中创建一个承诺可以使用Promise构造函数。构造函数接受一个回调函数,该回调函数包含两个参数:resolve和reject。resolve函数表示异步操作已成功完成,而reject函数表示操作已失败。

const myPromise = new Promise((resolve, reject) => {
  // 异步代码
  if (operationSuccessful) {
    resolve("操作成功!");
  } else {
    reject("操作失败 :(");
  }
});
执行

承诺一旦被创建,可以通过then()方法来执行它。这个方法接受一个回调函数,该回调函数包含一个参数,该参数是异步操作返回的结果。如果操作成功,则then()方法的回调函数将被执行,并且将操作结果传递给它;如果操作失败,则将调用.catch()方法的回调函数,该函数将传递失败原因。

myPromise.then((result) => {
  console.log(result); // "操作成功!"
}).catch((error) => {
  console.error(error); // "操作失败 :("
});
链式方法

由于.then()方法返回的是一个承诺,因此可以链式调用多个then()方法来处理异步操作的结果。

myPromise.then((result) => {
  console.log(result); // "操作成功!"
  return "结果已处理。";
}).then((result) => {
  console.log(result); // "结果已处理。"
}).catch((error) => {
  console.error(error); // "操作失败 :("
});
并行操作

如果需要同时执行多个异步操作,则可以将Promise.all()方法用于所有承诺的数组。当所有承诺都成功返回时,该方法的回调函数将被执行,并将所有结果传递给它;如果任何承诺失败,则将调用.catch()方法的回调函数。

const promise1 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve("第一个操作成功!");
  }, 1000); // 一秒钟后解决
});
const promise2 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve("第二个操作成功!");
  }, 2000); // 两秒钟后解决
});
Promise.all([promise1, promise2])
  .then((results) => {
    console.log(results); // ["第一个操作成功!", "第二个操作成功!"]
  })
  .catch((error) => {
    console.error(error);
  });
总结

承诺是JavaScript中优雅处理异步代码的一种方式。它使代码更加简洁和易于理解,并允许您按顺序执行代码,而无需等待异步操作完成。无论是单个异步操作还是多个并行操作,承诺都是一种强大和灵活的工具。