一步一步构建一个符合 PromiseA+ 规范的 Promise库(1)
2024-02-18 23:48:12
引言:让异步编程更加清晰和强大
说到现在的前端开发,Promise这个东西,基本人手一份儿。但是对于不少萌新来说,Promise 到底是什么?规范又是什么?为什么说它更强大?这都是他们想了解的。
那么我们还是从头来过,来捋一捋 Promise 的那些事。
Promise 是异步编程解决方案之一,对比函数式的回调和事件,它更加合理也更加强大。
从某种层面上来说,你可以将 Promise 视作某种期票。创建 Promise 时,你会把任务和结果记录下来。
接下去,你就可以找一个叫 Promise 实例化 Consumer 的东西,并让它来实现和拒斥这些任务。这样,你就相当于从这个期票中兑现了支票。
同时,你也可以继续循环利用这个 Promise,完成它的更多细节,但它不会过快过急,等着之前占票的兑现。
Promises 有三个最最核心的部分,亦称术语:
-
Pending: 此时的 Promise 还没有被兑现或拒斥过。
-
Fulfilled: 这是指 Promise 的兑现状态。
-
Rejected: 反之,指出了 Promise 的拒斥状态。
如果需要兑现,就会在 Pending -> Fulfilled 的状态中过渡。
如果需要拒斥,就是走 Pending -> Rejected 的步骤。
在这些状态的过渡中,我们也可以看到,一旦它进入到了Fulfilled或 Rejected的状态,也就不会再变卦啦!
现在,让我们看看 Promise 的基本使用方式是啥样的:
const promise = new Promise(() => {
});
promise.then(
// 成就处理函数
(result) => {
},
// 失败处理函数
(error) => {
}
);
现在这只是一个基本原理,若你想更深入地理解 Promise 的用法,可以猛戳我【深入理解 Promise 用法】。
长话短说,现在我们来瞅一瞅 Promise 的一些有点:
-
良好的可读性: Promise 的语法很简洁,使代码具有可读性,也便于调试和维护。
-
方便代码复用: Promise 的灵活用途之一是提高代码的复用率,可以很容易地创建和组合 Promise 实例来构建可复用的代码块。
-
代码的组织: Promise 的另外一个优点是它将代码组织为可重复使用和易于调试的块。这种组织结构使异步代码的调试更加容易。
-
方便测试:使用 Promise 时,编写测试更加容易。这是因为你可以专注于单个 Promise 实例,而不是整个异步操作。
-
更好的错误处理: Promise 具有内置的错误处理机制,这使得在代码中处理错误和意外情况更加容易。
怎么样,现在你对 Promise 有点眉目了吗?那接下来,我们就该步入实战,开始写写画画实践一把了!
首先,我们先来创建一个兼容 PromiseA+ 规范的 Promise库。
这儿,我会把这个库的代码放评论区去,你们可以拿着自己学习或者工作时用,还方便拿来对照使用!
总的来说,这块的文章开个头儿,接下来还有更多可以说的呢。
先讲重点,承诺符合规范的 PromiseA+ 兼容库,从今天到未来一段时间内都会更新一些小代码,还会放评论区,方便你们拿来实践呢。
我们后续会更新一些更细致的教程,带着你们一起精进编程技能。
下次,我们就可以来透过 Promise 实例化 Consumer——这个类,来介绍一些Promise API了,你千万别错过哦!
关注我,和小编一起学习更多编程的知识和技能,还有更多的有趣知识哟。等你哟!