返回

一步一步构建一个符合 PromiseA+ 规范的 Promise库(1)

前端




引言:让异步编程更加清晰和强大

说到现在的前端开发,Promise这个东西,基本人手一份儿。但是对于不少萌新来说,Promise 到底是什么?规范又是什么?为什么说它更强大?这都是他们想了解的。

那么我们还是从头来过,来捋一捋 Promise 的那些事。

Promise 是异步编程解决方案之一,对比函数式的回调和事件,它更加合理也更加强大。

从某种层面上来说,你可以将 Promise 视作某种期票。创建 Promise 时,你会把任务和结果记录下来。

接下去,你就可以找一个叫 Promise 实例化 Consumer 的东西,并让它来实现和拒斥这些任务。这样,你就相当于从这个期票中兑现了支票。

同时,你也可以继续循环利用这个 Promise,完成它的更多细节,但它不会过快过急,等着之前占票的兑现。

Promises 有三个最最核心的部分,亦称术语:

  1. Pending: 此时的 Promise 还没有被兑现或拒斥过。

  2. Fulfilled: 这是指 Promise 的兑现状态。

  3. Rejected: 反之,指出了 Promise 的拒斥状态。

如果需要兑现,就会在 Pending -> Fulfilled 的状态中过渡。

如果需要拒斥,就是走 Pending -> Rejected 的步骤。

在这些状态的过渡中,我们也可以看到,一旦它进入到了Fulfilled或 Rejected的状态,也就不会再变卦啦!

现在,让我们看看 Promise 的基本使用方式是啥样的:

const promise = new Promise(() => {

});

promise.then(
    // 成就处理函数
    (result) => {

    },
    // 失败处理函数
    (error) => {

    }
);

现在这只是一个基本原理,若你想更深入地理解 Promise 的用法,可以猛戳我【深入理解 Promise 用法】。

长话短说,现在我们来瞅一瞅 Promise 的一些有点:

  1. 良好的可读性: Promise 的语法很简洁,使代码具有可读性,也便于调试和维护。

  2. 方便代码复用: Promise 的灵活用途之一是提高代码的复用率,可以很容易地创建和组合 Promise 实例来构建可复用的代码块。

  3. 代码的组织: Promise 的另外一个优点是它将代码组织为可重复使用和易于调试的块。这种组织结构使异步代码的调试更加容易。

  4. 方便测试:使用 Promise 时,编写测试更加容易。这是因为你可以专注于单个 Promise 实例,而不是整个异步操作。

  5. 更好的错误处理: Promise 具有内置的错误处理机制,这使得在代码中处理错误和意外情况更加容易。

怎么样,现在你对 Promise 有点眉目了吗?那接下来,我们就该步入实战,开始写写画画实践一把了!

首先,我们先来创建一个兼容 PromiseA+ 规范的 Promise库。

这儿,我会把这个库的代码放评论区去,你们可以拿着自己学习或者工作时用,还方便拿来对照使用!

总的来说,这块的文章开个头儿,接下来还有更多可以说的呢。

先讲重点,承诺符合规范的 PromiseA+ 兼容库,从今天到未来一段时间内都会更新一些小代码,还会放评论区,方便你们拿来实践呢。

我们后续会更新一些更细致的教程,带着你们一起精进编程技能。

下次,我们就可以来透过 Promise 实例化 Consumer——这个类,来介绍一些Promise API了,你千万别错过哦!

关注我,和小编一起学习更多编程的知识和技能,还有更多的有趣知识哟。等你哟!