
手写Promise
文章平均质量分 81
青灯夜游/
An inch of gold will not buy an inch of time.
展开
-
手写Promise总结(源码+类方法封装+关键性问题列举)
前言:前面几篇文章我们对Promise进行了一个手写的封装,也提及到了一些有关方法的关键问题和执行机制,以及Promise的执行机制,也分别从异步和同步方向进行了考量。下面我就列举出有关Promise以及Promise相关方法的一些关键性问题,之后会给出完整的手写Promise源码,以及类封装的源码。关键性问题:1. 串联多个任务简单来讲就是 通过 then方法来链式调用多个任务(异步) 值得注意的是 then 方法链式调用的时候 需要等上一个then方法结束返回了之后才会调用下一个2. 改原创 2022-01-11 10:58:42 · 195 阅读 · 0 评论 -
手写Promise(原生Promise剖析五 - - resolve,reject等方法封装)
前言:在此之前,我们以及陆续封装好了Promise、then、all,这些方法,并且以及讲解了其中的机制,和封装的过程,现在,我们就把剩下的较为简单的方法过一遍。1. race()这个方法类似于all方法,传入的参数也是一个有Promise组成的数组,但是它的结果分析起来就相对简单很多,不用过多的考虑,其返回的值也是一个Promise对象,既然返回的是一个Promise对象,那么就存在链式调用,那么就需要进行二次封装,内部就需要调用then方法,它的结果机制是这样的:返回的是一个Promise对象,原创 2022-01-09 11:36:56 · 1075 阅读 · 0 评论 -
手写Promise(原生Promise剖析四 - - catch方法封装 - -(异常穿透))
首先,对于这个catch方法来说,是很简单的,因为它只帮我们做了一件事,那就是调用失败的回调,如下: let p1 = new Promise((resolve, reject) => { reject("Oh no") }) p1.then(value => { console.log("ok") }).then(value => { consol原创 2022-01-07 22:50:49 · 1041 阅读 · 1 评论 -
手写Promise(原生Promise剖析三 - - all方法封装)
前言:上篇文章中,我们以及构建出了基本的then()方法,并且处理掉了一些关键性问题,如链式调用怎么二次封装,链式调用then()方法返回值如何,并且完整的列举出了三种情况,分别是:非Promise,Promise(成功Promise、失败Promise)、抛出异常 , 时的返回值情况。最后我们留下了一个问题,就是有关这次文章的主题,那就是all()方法中,一次传入多个Promise组成的数组,最终结果如何,我们又该如何完美的封装它?首先,我们就需要了解官方的Promise.all()方法是怎么运作的,原创 2022-01-06 22:11:41 · 1306 阅读 · 0 评论 -
手写Promise(原生Promise剖析二--then方法的封装)
前言:在上一篇文章中我们已经基本了解到Promise是什么以及Promise能干什么。并且我们已经基本构建出了一个Promise对象的基本结构。现在我们需要知道什么是then()方法,并且then()方法有什么作用,有一定Promise基础的人一定知道,then()方法是在创建Promise对象之后,可以通过Promise实力对象调用的一个处理回调的函数,其中,包含成功的回调(value => {}),失败的回调(reason =>{})。同上一篇文章中讲到的状态改变,调用的回调函数是同一个原创 2022-01-04 10:32:39 · 630 阅读 · 0 评论 -
手写Promise(原生Promise剖析一)
在手写Promise之前,我们需要了解一下什么是Promise,为什么要引入Promise。1.Promise是ES6引入的一种解决异步编程的方案。2.为什么要引入Promise呢?可以从问题的根源出手,在我们写一些嵌套的回调函数时会发现,最基本的问题就是回调地狱的产生,同时伴随着当我们不去手动处理回调结果和异常时,我们就很头疼,没办法直接捕获到结果和异常,这时候,Promise就诞生了,他就相当于一个助手,当你将你所需要的回调让他去处理时,他会根据你说提供的回调返回给你一个“正确”、“错误”或者“原创 2021-12-30 23:47:02 · 868 阅读 · 0 评论