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

当面试官问你Promise时候,他究竟想听到什么?

如何确保一个变量是可信任PromisePromise.resolve方法传入不同值不同处理有哪些) ●Promise如何捕获异常?与传统try/catch相比有什么优势?...语法上说,Promise 是一个对象它可以获取异步操作消息。Promise 提供统一 API,各种异步操作都可以用同样方法进行处理,让开发者不用再关注于时序和底层结果。...5.吞掉可能出现错误和异常 如果在创建Promise时,存在JavaScript代码错误,会直接导致该Promise拒绝决议,那么你可以通过reject()来捕获异常,代码任何异常都不会吞掉。...如果是一个类Promise值, 比如其中含有名称为then成员变量,那么会将then展开形成一个新Promise对象Promise如何捕获异常?与传统try/catch相比有什么优势?...传统try/catch捕获异常方式是无法捕获异步异常。 而对于Promise对象来说,构造Promise实例时代码如果出错,则会被认为是一个拒绝决议,并会向观察回调传递异常信息。

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

JavaScript Promise (期约)

# 调用过晚 Promise 创建对象调用 resolve() 或 reject() 时,这个 Promise then() 注册观察回调就会被自动调度。...如果要传递多个值,就必须要把它们封装在单个值传递,比如通过一个数组或对象。 # 吞掉错误或异常 如果拒绝一个 Promise 并给出一个理由(也就是一个出错消息),这个值就会被传给拒绝回调。...如何能够确定返回这个东西实际上就是一个可信任 Promise 呢?包含在原生 ES6 Promise 实现解决方案就是 Promise.resolve()。...但它们辨识未捕获错误方法是定义一个某个时长定时器,比如 3 秒钟,在拒绝时刻启动。...# Promise 局限性 # 顺序错误处理 由于一个 Promise 链仅仅是连接到一起成员 Promise,没有把整个链标识为一个个体实体,这意味着没有外部方法可以用于观察可能发生错误

44330

浅析前端异常及降级处理

可以通过构造函数创建这个对象实例 image.png RangeError RangeError对象表示当一个值不在允许值集合或范围内时出现错误。...复制代码 2.动机 用来捕获promise代码错误 3.范围 使用Promise.prototype.catch()我们可以方便捕获到异常,现在我们来测试一下常见语法错误、代码错误以及异步错误...// 捕获promise异常: PromiseRejectionEvent 复制代码 注意:此段代码直接写在控制台是捕获不到promise异常,写在html文件正常捕获。...特定错误信息,比如错误所在生命周期钩子 // 只在 2.2.0+ 可用 } 复制代码 指定组件渲染和观察期间未捕获错误处理函数。... 2.6.0 起,这个钩子也会捕获 v-on DOM 监听器内部抛出错误

1.4K10

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

如果eval()没有错误,则不会抛出该错误。可以通过构造函数创建这个对象实例 ?...复制代码 2.动机 用来捕获promise代码错误 3.范围 使用Promise.prototype.catch()我们可以方便捕获到异常,现在我们来测试一下常见语法错误、代码错误以及异步错误...// 捕获promise异常: PromiseRejectionEvent 复制代码 注意:此段代码直接写在控制台是捕获不到promise异常,写在html文件正常捕获。...特定错误信息,比如错误所在生命周期钩子 // 只在 2.2.0+ 可用 } 复制代码 指定组件渲染和观察期间未捕获错误处理函数。... 2.6.0 起,这个钩子也会捕获 v-on DOM 监听器内部抛出错误

1.1K40

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

可以通过构造函数创建这个对象实例 image.png RangeError RangeError对象表示当一个值不在允许值集合或范围内时出现错误。...复制代码 2.动机 用来捕获promise代码错误 3.范围 使用Promise.prototype.catch()我们可以方便捕获到异常,现在我们来测试一下常见语法错误、代码错误以及异步错误...// 捕获promise异常: PromiseRejectionEvent 复制代码 注意:此段代码直接写在控制台是捕获不到promise异常,写在html文件正常捕获。...特定错误信息,比如错误所在生命周期钩子 // 只在 2.2.0+ 可用 } 复制代码 指定组件渲染和观察期间未捕获错误处理函数。... 2.6.0 起,这个钩子也会捕获 v-on DOM 监听器内部抛出错误

1.3K10

JavaScript 错误处理大全【建议收藏】

JavaScript 错误是一个对象,随后被抛出,用以终止程序。 要在 JavaScript 创建错误,我们调用相应构造函数。...在代码主要用 Error 和 TypeError 这两种最常见类型来创建自己错误对象。...如果失败了,或者决定不去捕获它,则异常可以在栈冒泡。 本质上讲,这还不错,但是在不同环境下对未捕获 rejection 反应不同。...更好地捕获他们! 错误处理 “promisified” 计时器 使用计时器或事件无法捕获回调引发异常。...在大多数情况下,需要与发射器对象和一些观察者侦听消息进行交互。 Node.js 任何事件驱动模块(例如net)都会扩展名为 EventEmitter 根类 。

6.3K50

关于 JavaScript 错误处理最完整指南(下半部)

如果我们失败了,或者决定不捕获它,异常可以在堆栈自由冒泡。 使用 Promise 来处理定时器异常 使用定时器或事件无法捕获回调引发异常。...; 使用 Promise.any 来处理错误 Promise.any() (Firefox > 79, Chrome > 85) 接收一个 Promise 迭代对象,只要其中一个 promise...如果迭代对象没有一个 promise 成功(即所有的 promises 都失败/拒绝),就返回一个失败 promise 和AggregateError类型实例,它是 Error 一个子类,用于把单一错误集合在一起...异步生成器函数返回迭代器对象也具有throw()方法,非常类似于其同步副本。...在JavaScript程序,可以通过多种方式来捕获异常。 同步代码异常是最容易捕获。相反,异步异常需要一些技巧来处理。

2.2K20

一杯喜茶时间手搓Promise

在程序可理解为等一段时间就会执行,等一段时间就是JS异步。「异步」是指需要比较长时间才能执行完成任务,例如网络请求,读取文件等。Promise是一个实例对象,可从中获取异步处理结果。...Promise有3种状态,分别是pending(进行)、fulfilled(已成功)、rejected(已失败)。只有异步操作改变Promise状态,其他操作都无法改变。...使用Promise 上述已说到,Promise是一个对象,那么它肯定是由其构造函数来创建。其构造函数接受一个函数作为参数,其函数参数有2个,分别是resolve和reject。...一般来说,then()使用第一个参数即可,因为catch()跟then()第二个参数一样,还能捕获到异常。 实现Promise Promise大致已了解清楚,也知道如何使用。...❝定义Promise构造函数 ❞ 创建Promise对象使用new Promise((resolve, reject) => {}),可知道Promise构造函数参数是一个函数,我们将其定义为implement

75240

关于 JavaScript Promise

Promise 如何运行一个Promise是一个代理,它代表一个在创建 promise 时不一定已知值。它允许你将处理程序与异步操作最终成功值或失败原因关联起来。...然后,返回获取数据以便后续操作。在调用 fetchData() 函数代码,可以使用 .then() 方法来处理成功获取数据后进一步操作,并使用 .catch() 方法来捕获可能错误。...,让我们看一个简单示例,演示如何在 Bluebird 取消 Promise:// 引入 Bluebird 库var Promise = require("bluebird");// 创建一个 Promise...更好错误处理机制: Promise 具有 .catch() 方法,可以捕获 Promise任何地方发生错误。这使得错误处理更加集中和可控,而不必在每个异步操作中都编写独立错误处理逻辑。...更好异步错误堆栈: Promise 在发生错误时会生成更详细错误堆栈信息,有助于更容易追踪和调试异步代码问题。

46363

手撕钉钉前端面试题

在此过程,我们关注点不在于如何去实现**对应关系,**而在于如何将各种已有的对应关系进行高效联动,从而快速进行数据转换,达到最终数据处理目的,提供开发效率。...Promise 状态只有两种变化可能: pending(进行)变为 fulfilled(已成功)或 pending(进行)变为 rejected(已失败) 温馨提示:有限状态机提供了一种优雅解决方式...形式进行错误捕获Promise 内部捕获错误) 状态单一,每次决断只能产生一种状态结果,需要不停进行链式调用 温馨提示:手写 Promise 是面试官非常喜欢一道笔试题,本质是希望面试者能够通过底层设计正确了解...,会导致函数返回 Promise 对象变为 rejected 状态,从而可以通过 catch 捕获, 上述代码只是一个粗粒度容错处理,如果希望 firstPromise 错误后可以继续执行 nextPromise...#### 126、HTTP 中提升传输速率方式有哪些?常用内容编码方式有哪些? #### 127、传输图片过程如果突然中断,如何在恢复后之前中断恢复传输?

2.9K20

「React进阶」我在函数组件可以随便写 —— 最通俗异步组件原理

前言 接下来几篇文章将围绕一些‘猎奇’场景,原理颠覆对 React 认识。...于是我们把第二个 Index 抛出 Promise 对象用 componentDidCatch 捕获。看看会是什么吧?...7.jpg 如上所示,Promise 对象没有被正常捕获捕获是异常提示信息。在异常提示,可以找到 Suspense 字样。...到此为止,可以总结出: componentDidCatch 通过 try{}catch(e){} 捕获到异常,如果我们在渲染过程,throw 出来普通对象,也会被捕获到。...请求函数 getData 返回一个 Promise ,这个 Promise 使命就是完成数据交互。 一个模拟异步组件,内部使用 createFetcher 创建请求函数,请求数据。

3.6K30

如何优雅处理前端异常?

对于前端来说,我们异常捕获还真不少。...总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...: 需要注意: onerror 最好写在所有 JS 脚本前面,否则有可能捕获不到错误; onerror 无法捕获语法错误; 到这里基本就清晰了:在实际使用过程,onerror 主要是来捕获预料之外错误...,而 try-catch 则是用来在预见情况下监控特定错误,两者结合使用更加高效。...没有写 catch Promise 抛出错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 不要忘记写 catch 处理抛出异常。

1.8K50

如何用正确姿势去高效解决前端异常,用实践造就答案

对于前端来说,我们异常捕获还真不少。...总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...需要注意: onerror 最好写在所有 JS 脚本前面,否则有可能捕获不到错误; onerror 无法捕获语法错误; 到这里基本就清晰了:在实际使用过程,onerror 主要是来捕获预料之外错误...,而 try-catch 则是用来在预见情况下监控特定错误,两者结合使用更加高效。...没有写 catch Promise 抛出错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 不要忘记写 catch 处理抛出异常。

1.1K60

36 个JS 面试题为你助力金九银十(面试必读)

使用循环:首先,计算字符串字符数,然后对原始字符串应用递减循环,该循环最后一个字符开始,打印每个字符,直到count变为零。 7.JS如何将页面重定向到另一个页面?...列出JS一些设计模式: 设计模式是软件设计中常见问题通用重用解决方案,以下是一些设计模式是: 创建模式:该模式抽象了对象实例化过程。 结构型模式:这些模式处理不同类和对象以提供新功能。...行为模式:也称发布-订阅模式,定义了一个被观察者和多个观察、一对多对象关系。 并行设计模式:这些模式处理多线程编程范例。 架构设计模式:这些模式用于处理架构设计。 9....10.如何在JS动态添加/删除对象属性?...promise是js一个对象,用于生成可能在将来产生结果值。 值可以是已解析值,也可以是说明为什么未解析该值原因。

7.2K30

前端开发,如何优雅处理前端异常?

对于前端来说,我们异常捕获还真不少。...总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...// source:发生错误脚本URL(字符串) // lineno:发生错误行号(数字) // colno:发生错误列号(数字) // error:Error对象对象) console.log...无法捕获语法错误; 到这里基本就清晰了:在实际使用过程,onerror 主要是来捕获预料之外错误,而 try-catch 则是用来在预见情况下监控特定错误,两者结合使用更加高效。...没有写 catch Promise 抛出错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 不要忘记写 catch 处理抛出异常。

94010

如何优雅处理前端异常?

对于前端来说,我们异常捕获还真不少。...总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...// source:发生错误脚本URL(字符串) // lineno:发生错误行号(数字) // colno:发生错误列号(数字) // error:Error对象对象) console.log...无法捕获语法错误; 到这里基本就清晰了:在实际使用过程,onerror 主要是来捕获预料之外错误,而 try-catch 则是用来在预见情况下监控特定错误,两者结合使用更加高效。...没有写 catch Promise 抛出错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 不要忘记写 catch 处理抛出异常。

1.6K20

如何优雅处理前端异常?

对于前端来说,我们异常捕获还真不少。...总结一下,大概如下: 1、JS 语法错误、代码异常 2、AJAX 请求异常 3、静态资源加载异常 4、Promise 异常 5、Iframe 异常 6、跨域 Script error 7、崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...// source:发生错误脚本URL(字符串) // lineno:发生错误行号(数字) // colno:发生错误列号(数字) // error:Error对象对象) console.log...无法捕获语法错误; 到这里基本就清晰了:在实际使用过程,onerror 主要是来捕获预料之外错误,而 try-catch 则是用来在预见情况下监控特定错误,两者结合使用更加高效。...没有写 catch Promise 抛出错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 不要忘记写 catch 处理抛出异常。

2.1K30

如何优雅处理前端异常?(史上最全前端异常处理方案)

对于前端来说,我们异常捕获还真不少。...总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...// source:发生错误脚本URL(字符串) // lineno:发生错误行号(数字) // colno:发生错误列号(数字) // error:Error对象对象) console.log...无法捕获语法错误; 到这里基本就清晰了:在实际使用过程,onerror 主要是来捕获预料之外错误,而 try-catch 则是用来在预见情况下监控特定错误,两者结合使用更加高效。...没有写 catch Promise 抛出错误无法被 onerror 或 try-catch 捕获到,所以我们务必要在 Promise 不要忘记写 catch 处理抛出异常。

2.9K10

跨越时空对白——async&await分析

看代码 [无法捕获.png] 这段代码,setTimeout回调函数抛出一个错误,并不会在catch捕获,会导致程序直接报错崩掉。...如何捕获?...基于Promise解决方案 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束事件(通常是一个异步操作)结果。语法上说,Promise 是一个对象它可以获取异步操作消息。...造成这个问题原因还是在于异常抛出时候,exec已经执行栈中出栈了,此外,在Promise规范里有说明,在异步执行过程,通过throw抛出异常是无法捕获,异步异常必须通过reject捕获 [...,Generator 函数体外,使用指针对象throw方法抛出错误,可以被函数体内try...catch代码块捕获

1.1K21
领券