首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从零实现一个 Promise

Promise 构造函数 在 Promise 构造函数中,主要操作是初始化状态和数据以及执行函数参数。 首先需要将状态初始化为 pending,然后定义 Promise 的值以及回调函数集。...if (self.status === PENDING) { return promise2 = new MyPromise((resolve, reject) => { // 将回调函数存进回调函数集...(then 方法第二个函数参数)并根据返回值确定 promise2 的状态;当状态为 pending 时,则需要将 onResolved 和 onRejected 函数先存进回调函数集中,等到 Promise...(() => { // 异步回调 // 当状态为 pending 时,改变状态为 resolved,存储 Promise 值以及执行回调函数集 if (self.status =...if (self.status === PENDING) { return promise2 = new MyPromise((resolve, reject) => { // 将回调函数存进回调函数集

41920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    浅析前端异常及降级处理

    是所有错误的基类,其他错误都继承自该类型 EvalError EvalError对象表示全局函数eval()中发生的错误。...注意:错误边界无法捕获以下场景中产生的错误 事件处理 异步代码(例如 setTimeout 或 requestAnimationFrame 回调函数) 服务端渲染 它自身抛出来的错误(并非它的子组件)...并不是,回到解决问题的背景下,相比于页面崩溃或点不动,在适当的时机,以一种适当的方式去提醒用户当前发生了什么,无疑是一种更友好的处理方式。...正好提供了一种捕获异常的机制(上文已提及)并做降级处理,但是细心的小伙伴发现了,react并不能捕获如下四种错误: 事件处理 异步代码(例如 setTimeout 或 requestAnimationFrame 回调函数...setTimeout(()=>{ console.log(error, 'error错误'); }) }); 复制代码 当给error事件的回调函数加入

    1.5K10

    【Web技术】剖析前端异常及降级处理

    是所有错误的基类,其他错误都继承自该类型 EvalError EvalError对象表示全局函数eval()中发生的错误。...注意:错误边界无法捕获以下场景中产生的错误 事件处理 异步代码(例如 setTimeout 或 requestAnimationFrame 回调函数) 服务端渲染 它自身抛出来的错误(并非它的子组件)...并不是,回到解决问题的背景下,相比于页面崩溃或点不动,在适当的时机,以一种适当的方式去提醒用户当前发生了什么,无疑是一种更友好的处理方式。...正好提供了一种捕获异常的机制(上文已提及)并做降级处理,但是细心的小伙伴发现了,react并不能捕获如下四种错误: 事件处理 异步代码(例如 setTimeout 或 requestAnimationFrame 回调函数...setTimeout(()=>{ console.log(error, 'error错误'); }) }); 复制代码 当给error事件的回调函数加入

    1.3K10

    剖析前端异常及其降级处理和防范方案

    image.png TypeError 传递给函数的操作数或实参与该操作符或函数期望的类型不兼容: ? image.png URIError 当全局URI处理函数以错误的方式使用时: ?...注意:错误边界无法捕获以下场景中产生的错误 事件处理 异步代码(例如 setTimeout 或 requestAnimationFrame 回调函数) 服务端渲染 它自身抛出来的错误(并非它的子组件)...并不是,回到解决问题的背景下,相比于页面崩溃或点不动,在适当的时机,以一种适当的方式去提醒用户当前发生了什么,无疑是一种更友好的处理方式。...正好提供了一种捕获异常的机制(上文已提及)并做降级处理,但是细心的小伙伴发现了,react并不能捕获如下四种错误: 事件处理 异步代码(例如 setTimeout 或 requestAnimationFrame 回调函数...setTimeout(()=>{ console.log(error, 'error错误'); }) }); 复制代码 当给error事件的回调函数加入

    1.3K40

    Javascript错误处理

    我们试想一下,一个代码块写一个这样方法,这样我们找错就特别容易,尤其是多人开发同一项目。...其他错误类型都是继承该类型,主要用于自定义错误类型 二、InternalError InternalError类型的错误会在底层JavaScript引擎抛出异常时由浏览器抛出.例如,递归过多导致了栈溢出.这类型并不是代码中通常要处理的错误...三、EvalError EvalError类型错误会在使用eval()函数发生异常时抛出 基本上,只要不把eval()当成函数调用就会报错 四、RangeError RangeError会在数值越界时抛出...在给eval()传入的字符串包含JavaScript语法错误时发生 七、TypeError 类型错误 在给函数传参前没有验证的情况下,错误频繁发生 八、URIError 路径错误 自定义抛出错误...function err(){ throw new TypeError('我是jackson') } err(); 使用throw,代码会立即停止并抛出我们传入的值。

    82930

    JavaScript 权威指南第七版(GPT 重译)(五)

    当满足某些条件或发生某些(异步)事件时,另一个函数会调用(“回调”)你的函数。你提供的回调函数的调用会通知你条件或事件,并有时,调用会包括提供额外细节的函数参数。...事件驱动的 JavaScript 程序在指定的上下文中为指定类型的事件注册回调函数,当指定的事件发生时,Web 浏览器会调用这些函数。...相反,调用者传递一个回调函数,当结果准备就绪或发生错误时调用。在这种情况下,调用者提供了一个期望两个参数的回调函数。...当发生这种情况时,传递给此第二个回调函数的参数是一个值—通常是代表拒绝原因的 Error 对象。...Reflect.ownKeys(o) 此函数返回对象o的属性名称的数组,如果o不是对象则抛出 TypeError。返回的数组中的名称将是字符串和/或符号。

    24610

    从 Promise 对象讲解事件循环机制

    Promise Promise简介 Promise 是异步编程的一种解决方案,比传统的解决方案 (回调函数和事件)更合理和更强大。...Promise的回调函数也只能拿到前面状态凝固的结果 Promise缺点: 1 无法取消Promise,一旦新建它就会立即执行,无法中途取消 2 如果不设置回调函数(没有捕获错误),Promise...then(onfulfilled,onrejected)方法中有两个参数,两个参数都是函数,第一个参数执行的是resolve()方法(即异步成功后的回调方法),第二参数执行的是reject()方法(即异步失败后的回调方法...03 Promise.prototype.catch() catch方法是.then(null,onrejected)的别名,用于指定发生错误时的回调函数。...状态,此时第一个被reject的实例的返回值,会传递给Promise.all的回调函数: ?

    1.9K30

    【Python 入门第十七讲】异常处理

    另一方面,当发生一些内部事件时,会引发异常,这些事件改变了程序的正常流程。python 中不同类型的异常:在 Python 中,当程序执行过程中发生错误时,可能会引发几个内置的 Python 异常。...TypeError:当操作或函数应用于错误类型的对象(例如将字符串添加到整数)时,将引发此异常。NameError:当在当前作用域中找不到变量或函数名称时,将引发此异常。...ValueError:当使用无效的参数或输入调用函数或方法时,例如,当字符串不表示有效整数时,尝试将字符串转换为整数,则会引发此异常。...例:TypeError:当操作或函数应用于错误类型的对象时,会引发此异常。下面是一个示例:这里会引发“TypeError”,因为要添加的两种数据类型不同。...x = 5y = "hello"z = x + y输出:尝试 catch 块来解决它:代码尝试将整数 (x) 和字符串 (y) 相加,这不是有效的操作,它将引发 x y TypeError 。

    35111

    【原译】javascript中的错误处理

    解释起来就是,当发生错误时,JavaScript会去调用栈检查异常事件。如果你对此不熟悉建议先去看看基础的东西。...fn(); } catch (e) { } return null; }   这个处理函数接收一个 fn 回调函数作为输入,这个函数然后在处理器函数里面被调用,单元测试如下: it('...null,回调函数 fn() 可以指向一个正确的方法或者一个异常,下面的点击处理函数会显示最终的处理结果。...我说过全局异常处理可以在任何执行上下文中执行,如果给window对象增加一个错误处理函数,就OK了。这样是不是既能处理捕获处理错误又能保持代码的优雅呢。全局的错误处理能让你的代码干净整洁。   ...一个是失败沉默的方法,在错误发生时忽略错误不作为而不影响后面的继续执行。另一种是发生后迅速找到错误发生的地方。明显我们知道那种方法更具有优势。我的选择是:不要隐藏错误。

    1.5K20

    【原译】javascript中的错误处理

    解释起来就是,当发生错误时,JavaScript会去调用栈检查异常事件。如果你对此不熟悉建议先去看看基础的东西。...fn(); } catch (e) { } return null; } 这个处理函数接收一个 fn 回调函数作为输入,这个函数然后在处理器函数里面被调用,单元测试如下: it('returns...null,回调函数 fn() 可以指向一个正确的方法或者一个异常,下面的点击处理函数会显示最终的处理结果。...我说过全局异常处理可以在任何执行上下文中执行,如果给window对象增加一个错误处理函数,就OK了。这样是不是既能处理捕获处理错误又能保持代码的优雅呢。全局的错误处理能让你的代码干净整洁。...一个是失败沉默的方法,在错误发生时忽略错误不作为而不影响后面的继续执行。另一种是发生后迅速找到错误发生的地方。明显我们知道那种方法更具有优势。我的选择是:不要隐藏错误。

    2K90

    ES6之Promise用法详解

    2.1.3 回调函数 提起异步,就不得不谈谈回调函数了。上例中,setTimeout里的function便是回调函数。可以简单理解为:(执行完)回(来)调(用)的函数。...由于前一个回调函数,返回的还是一个Promise对象(即有异步操作),这时后一个回调函数,就会等待该Promise对象的状态发生变化,才会被调用。....catch() 语法:Promise.prototype.catch(onRejected) 该方法是.then(undefined, onRejected)的别名,用于指定发生错误时的回调函数。...then方法指定的回调函数,若抛出错误,也会被下一个catch捕获。catch中也能抛错,则需要后面的catch来捕获。...当p1, p2, p3中有一个实例的状态发生改变(变为fulfilled或rejected),p的状态就跟着改变。并把第一个改变状态的promise的返回值,传给p的回调函数。

    1.2K30

    Python3 | 练气期,捕获错误异常 、自定义异常处理!

    语法错误:或者称为解析错,即编写的程序没有通过语法的检查,这是初学者经常碰到的, 例如:while True print('Hello world'), 由于前面缺少了一个冒号 : 所以在运行程序会报...特别注意: 异常处理程序不仅会处理在 try 子句中立刻发生的异常,还会处理在 try 子句 中调用(包括间接调用)的函数。...TypeError. 3.异常组 描述:在 Python 中,异常组是可以多个异常的集合,它允许一个 except 子句处理多个异常,而不是像前面的例子中那样处理每个异常一个 except 子句。...│ └── UnboundLocalError ├── OSError # 系统函数返回系统相关的错误时将被引发,此类错误包括 I/O 操作失败例如 "文件未找到" 或...├── TypeError # 当一个操作或函数被应用于类型不适当的对象时将被引发。

    12110
    领券