编辑代码

//Promise处理异步操作的对象
//三种状态:
/*
pending    初始状态,不成功也不失败
fulfilled  操作成功完成
rejected   操作失败
*/
//特点: 状态一旦改变就会永久保持状态不会再发生状态变化
//状态只有两种可能:resolve(成功):pending -> fulfilled  reject(失败): pending -> rejected


const promise1 = new Promise((resolve) => setTimeout(() => resolve("Promise 1"), 1000));
const promise2 = new Promise((resolve) => setTimeout(() => resolve("Promise 2"), 400));
const promise3 = new Promise((resolve) => setTimeout(() => resolve("Promise 3"), 2000));

// 使用 Promise.all 并行处理多个 Promise
Promise.all([promise1, promise2, promise3])
  .then((results) => {
    console.log("所有的 Promise 都已成功完成:", results); 
  })
  .catch((error) => {
    console.error("至少有一个 Promise 被拒绝:", error);
  })
  .finally(() => {
  console.log("可能完成了吧");
});
// 使用 Promise.race 返回最先完成的 Promise
Promise.race([promise1, promise2, promise3])
  .then((result) => {
    console.log("第一个 Promise 已成功完成:", result); 
  })
  .catch((error) => {
    console.error("第一个 Promise 被拒绝:", error);
  })
  .finally(() => {
    console.log("可能完成了吧");
  });


  
//promise.any()获取第一个成功的结果
// Promise.any([promise1,promise2,promise3])
//   .then(result=>{
//       console.log('promise.any  第一个成功的promise:',result);
//   })
//   .catch((error)=>{
//        console.log('失败promise:',error);
//   })


//Promise 的基本用法是通过构造函数创建 Promise 实例,然后使用 .then() 和 .catch() 方法处理结果:、
  const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    const success = true; 
    if (success) {
      resolve("成功");
    } else {
      reject("操作失败"); 
    }
  }, 1000);
});
promise
  .then((result) => {
    console.log(result); 
  })
  .catch((error) => {
    console.error(error); 
  });