1204,JavaScript 生日快乐
共 1183字,需浏览 3分钟
·
2020-12-06 11:13
嗨,我是你稳定更新、干货贼多的勾勾。
今天是个特殊的日子。
对于前端开发者来说,没有这一天,也许就没有前端这个职业。
1995 年 12 月 4 日,JavaScript 诞生!
25 年以来,它已经成为被广泛学习的一门编程语言。
为庆祝 JS 诞生,今天介绍一道 JS 面试题,后附答案。
# 面试题目
对于 promise 我们使用的很熟练,请谈谈下面两种写法的区别?
//第一种
promise.then((res) => {
console.log('then:', res);
}).catch((err) => {
console.log('catch:', err);
})
//第二种
promise.then((res) => {
console.log('then:', res);
}, (err) => {
console.log('catch:', err);
})
# 答案解析
第一种 catch 方法可以捕获到 catch 之前整条 promise 链路上所有抛出的异常。
第二种 then 方法的第二个参数捕获的异常依赖于上一个 Promise 对象的执行结果。
promise.then(successCb, faildCd) 接收两个函数作为参数,来处理上一个 promise 对象的结果。
then 方法返回的是 promise 对象。
第一种链式写法,使用 catch,相当于给前面一个 then 方法返回的 promise 注册回调,可以捕获到前面 then 没有被处理的异常。
第二种是回调函数写法,仅为上一个 promise 注册异常回调。
如果是 promise 内部报错,reject 抛出错误后,then 的第二个参数就能捕获到;如果then的第二个参数不存在,则catch方法会捕获到。
如果是 then 的第一个参数函数 resolve 中抛出了异常,即成功回调函数出现异常后,then 的第二个参数 reject 捕获捕获不到,catch方法可以捕获到。
学废了吗?
JavaScript,生日快乐~
推荐阅读:
前端人因为 Vue3 的 Ref-sugar 提案打起来了!
点点“赞”和“在看”,保护头发,减少bug。