promise语法

今夜星潮暗涌

在JavaScript中,Promise 是一种用于异步计算的对象。它允许你为异步操作的成功或失败分别指定处理函数,这使得异步方法可以像同步方法那样返回值。Promise 有几种状态:

  1. Pending(进行中):初始状态,既不是成功,也不是失败。
  2. Fulfilled(已成功):操作成功完成。
  3. Rejected(已失败):操作失败。

下面是一个简单的 Promise 示例:

const myPromise = new Promise((resolve, reject) => {
    const condition = true; // 假设这是异步操作的结果
    if (condition) {
        resolve('Promise is resolved successfully.');
    } else {
        reject('Promise is rejected.');
    }
});

myPromise.then((value) => {
    console.log(value); // 如果Promise被成功解决,将打印这条信息
}).catch((error) => {
    console.error(error); // 如果Promise被拒绝,将打印错误信息
});

创建 Promise

创建一个 Promise,你需要使用 new Promise 构造函数,并提供一个执行器函数(executor function),这个函数有两个参数:resolvereject

  • resolve:当异步操作成功时调用,并且返回操作的结果。
  • reject:当异步操作失败时调用,并且返回操作的错误。

使用 Promise

一旦创建了 Promise 对象,就可以使用 .then().catch() 方法来添加处理成功或失败情况的回调函数。

  • .then(onFulfilled, onRejected):当 Promise 被解决(fulfilled)时调用 onFulfilled 回调。如果有多个 .then(),它们会按照定义的顺序依次处理。
  • .catch(onRejected):当 Promise 被拒绝(rejected)时调用 onRejected 回调。它用于处理 Promise 链中前面 .then()Promise 构造函数中的错误。

Promise 链

Promise 的一个强大特性是链式调用。每个 .then().catch() 方法返回的是一个新 Promise,这允许你将多个异步操作链接起来。

myPromise
    .then((firstResult) => {
        console.log(firstResult);
        return 'Doing something else';
    })
    .then((secondResult) => {
        console.log(secondResult); // 打印 'Doing something else'
        return 'Doing yet another thing';
    })
    .catch((error) => {
        console.error(error);
    });

Promise.all

Promise.all 是一个处理多个 Promise 对象的方法,它接受一个可迭代的 Promise 对象数组,并在所有 Promise 对象都解决后解决,或者只要其中一个被拒绝就立即拒绝。

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
    setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then((values) => {
    console.log(values); // [3, 42, "foo"]
});

Promise 与 async/await

Promise 与 ES2017 引入的 async/await 语法紧密配合。async 函数返回一个 Promise,而 await 用于等待 Promise 的解决。

async function asyncFunction() {
    try {
        const result = await myPromise; // 等待myPromise解决
        console.log(result);
    } catch (error) {
        console.error(error);
    }
}

结语

Promise 是JavaScript处理异步操作的重要工具,它使得异步代码的编写和理解变得更加容易。掌握 Promise 的使用,能够帮助开发者编写更加清晰、可维护的异步代码。随着 async/await 的引入,异步编程的体验得到了进一步的提升,但 Promise 依然是现代JavaScript异步编程的基础。

版权声明:本页面内容旨在传播知识,为用户自行发布,若有侵权等问题请及时与本网联系,我们将第一时间处理。E-mail:284563525@qq.com

目录[+]

取消
微信二维码
微信二维码
支付宝二维码