9个Promise面试题小白帮助_面试入门基础知识

1. 多个 .catchvar p = new Promise((resolve, reject) => {reject(Error(‘The Fails!’))
})
p.catch(error => console.log(error.message))
p.catch(error => console.log(error.message))以上代码的输

9个Promise面试题小白帮助

1. 多个 .catch

var p = new Promise((resolve, reject) => {
  reject(Error('The Fails!'))
})
p.catch(error => console.log(error.message))
p.catch(error => console.log(error.message))

以上代码的输出将会是什么?请选择正确的答案:

9个Promise面试题小白帮助_面试入门基础知识

  • [ ] 打印一次消息
  • [x] 打印两次消息
  • [ ] UnhandledPromiseRejectionWarning
  • [ ] 程序退出

解析:

我们使用构造函数方法创建一个 Promise,并通过 reject 回调立即触发错误。

然后 .catch 工作方式类似于 DOM 的 .addEventListener(event,callback) 或 Event Emitter 的 .on(event,callback),其中可以添加多个回调。每个都用同样的参数进行调用。

2. 多个 .catch

var p = new Promise((resolve, reject) => {
  return Promise.reject(Error('The Fails!'))
})
p.catch(error => console.log(error.message))
p.catch(error => console.log(error.message))

以上代码的输出将会是什么?请选择正确的答案:

  • [ ] 打印一次消息
  • [ ] 打印两次消息
  • [x] UnhandledPromiseRejectionWarning
  • [ ] 程序退出

解析:

9个Promise面试题小白帮助_面试入门基础知识

使用 Promise 构造函数时,必须调用 resolve() 或 reject() 回调。 Promise 构造函数不使用你的返回值,因此实际上不会再收到由 Promise.reject() 创建的其他 Promise。

在 Promise.reject() 之后没有 .catch 时,答案是 UnhandledPromiseRejectionWarning。

3. 链接 .then 和 .catch

var p = new Promise((resolve, reject) => {
    reject(Error('The Fails!'))
  })
  .catch(error => console.log(error))
  .then(error => console.log(error))

以上代码的输出将会是什么?请选择正确的答案:

  • [x] 打印错误和 undefined
  • [ ] 打印两次错误
  • [ ] UnhandledPromiseRejectionWarning
  • [ ] undefined

解析

9个Promise面试题小白帮助_面试入门基础知识

当链接 .then 和 .catch 时,将它们视为一系列步骤会很有帮助。每个 .then 都接收前一个 .then 返回的值作为其参数。但是,如果你的 “step” 遇到错误,则任何后续的 .then “ steps” 都将被跳过,直到遇到 .catch。如果要覆盖错误,你要做的就是返回一个非错误值。可以通过任何随后的 .then 访问。

提示: console.log() 总是返回 undefined。

4. 链接 .catch

var p = new Promise((resolve, reject) => {
    reject(Error('The Fails!'))
  })
  .catch(error => console.log(error.message))
  .catch(error => console.log(error.message))

以上代码的输出将会是什么?请选择正确的答案:

  • [x] 打印一次错误消息
  • [ ] 打印两次错误消息
  • [ ] UnhandledPromiseRejectionWarning
  • [ ] 程序退出

解析

当链接 .catch 时,每个仅处理先前的 .then 或 `.catch “步骤” 中引发的错误。在此例中,第一个 .catch返回 console.log,只能通过在两个 .catch 之后添加 .then() 来访问。

5. 多个 .catch

new Promise((resolve, reject) => {
    resolve('Success!')
  })
  .then(() => {
    throw Error('Oh noes!')
  })
  .catch(error => {
    return "actually, that worked"
  })
  .catch(error => console.log(error.message))

以上代码的输出将会是什么?请选择正确的答案:

  • [ ] 打印一次消息
  • [ ] 打印两次消息
  • [ ] UnhandledPromiseRejectionWarning
  • [x] 不打印任何内容

解析

提示: .catch可以简单地通过返回一个常规值来忽略(或覆盖)错误。

该技巧仅在随后的 .then 接收该值时有效。

6. .then 之间的流程

Promise.resolve('Success!')
  .then(data => {
    return data.toUpperCase()
  })
  .then(data => {
    console.log(data)
  })

以上代码的输出将会是什么?请选择正确的答案:

  • [ ] 打印 “Success!” 和 “SUCCESS!”
  • [ ] 打印 “Success!”
  • [x] 打印 “SUCCESS!”
  • [ ] 不打印任何内容

解析

提示:.then依次传递数据,从 return value 到下一个 .then(value => /* handle value */)。

为了将值传递给下一个 .then,return 是关键。

7. .then 之间的流程

Promise.resolve('Success!')
  .then(data => {
    return data.toUpperCase()
  })
  .then(data => {
    console.log(data)
    return data
  })
  .then(console.log)

以上代码的输出将会是什么?请选择正确的答案:

  • [ ] 打印 “SUCCESS!”
  • [ ] 打印 “Success!”
  • [x] 打印 “SUCCESS!” 和 “SUCCESS!”
  • [ ] 不打印任何内容

解析:

有两个 console.log 调用将被调用。

8. .then 之间的流程

Promise.resolve('Success!')
  .then(data => {
    data.toUpperCase()
  })
  .then(data => {
    console.log(data)
  })

以上代码的输出将会是什么?请选择正确的答案:

  • [ ] 打印 “SUCCESS!”
  • [ ] 打印 “Success!”
  • [ ] 打印 “SUCCESS!” 和 “SUCCESS!”
  • [x] 打印 undefined

解析:

提示:.then 依次传递数据,从返回值到下一个 .then(value => /* handle value */)。

为了将值传递给下一个 .then,return 是关键。

9. .then 和 .catch 之间的流程

Promise.resolve('Success!')
  .then(() => {
    throw Error('Oh noes!')
  })
  .catch(error => {
    return 'actually, that worked'
  })
  .then(data => {
    throw Error('The fails!')
  })
  .catch(error => console.log(error.message))

以上代码的输出将会是什么?请选择正确的答案:

  • [ ] 打印 “Oh noes!” 和 “The fails!”
  • [ ] 打印 “Oh noes!””
  • [x] 打印 “The fails!”
  • [ ] 打印 “actually, that worked”
  • [ ] 不打印任何内容
海计划公众号
(0)
上一篇 2020/03/23 01:37
下一篇 2020/03/23 01:37

您可能感兴趣的内容

  • iframe 透明兼容,设置iframe透明背景的方法入门基础知识_iframe菜鸟知识

    从IE5.5+就支持iframe框架的背景透明。通过使用allowtransparency和background-color来设置iframe框架的透明效果,代码如下:<iframe src="a.html" allowtransparency="true" style="background-color=transparent" frameborder="

    2020/04/06
  • node中的全局变量是什么?教程视频_变量入门基础

    JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。在浏览器 JavaScript中,通常 window 是全局对象。那么在node中全局变量是什么?在Node.js中全局对象是global,所有全局变量(除了 global 本身以外)都是 global对象的属性。全局变

    2020/03/20
  • Fonepaw小白指南_苹果手机HEIC格式转换工具

    Fonepaw小白指南 官方网址:https://www.fonepaw.hk/ 简介描述:苹果手机HEIC格式转换工具 Fonepaw是一个基于苹果手机的HEIC图片格式转换为J…

    2020/03/10
  • nlp.js入门基础教程_基于node自然语言处理的一个库

    nlp.js入门基础教程 官方网址:https://github.com/axa-group/nlp.js GitHub:https://github.com/axa-group/…

    2020/03/06
  • YouCompress入门教程_在线免费文件压缩工具

    YouCompress入门教程 官方网址:https://www.youcompress.com/ 简介描述:在线免费文件压缩工具 YouCompress是一个可以在浏览器里直接压…

    2020/03/11
  • 用 Javascript 写排序算法小白知识_算法使用帮助

    为了方便自己也帮到更多人,所有的排序算法都会简单说一下自己的思路,并附上自己能找到的最容易理解的可视化动画。至于为什么选择用 Javascript,则是因为我觉得 Javascript 是最方便运行和调试的,只需要复制代码粘贴到浏览器的控制台就可以了,我为所有的算法附上了测试用例,通过引入 Mocha 就可以在浏览器中显示用例的通过情况。因此我将所有的算法都

    2020/03/29
  • Less参数混合指南攻略_参数菜鸟教程网

    Mixins 具有多个参数* 参数可以使用逗号或分号分隔。 (建议使用分号,因为逗号具有双重含义:可以将其解释为mixin参数分隔符或者是css列表分隔符);使用逗号作为mixin分隔符使不可能创建逗号分隔的列表作为参数。参数mixin使用一个或多个参数,通过参数和它的属性来扩展Less的功能,以达到在混合到另一个块时自定义mixin输出的效果。如果编译器在

    2020/03/23
  • javascript如何产生不重复随机数?入门基础知识_随机数小白攻略

    使用JavaScript中的math.random()方法产生随机数,将产生的随机数放入数组中并判断是否已存在,若已存在则重新生成。以此方便可生成不重复随机数。JavaScript中实现产生不重复随机数代码如下:///

    /// 生成一个指定范围的随机数
    ///

    /// 起始值<

    2020/03/31
  • 未来物联网全栈开发,更多人看重JavaScript而不是python入门基础_物联网小白攻略

    未来物联网全栈开发,从国内某网站投票结果显示,57%选择JavaScript剩下43%选择Python。一直以来物联网全栈开发都很受关注,这也是未来互联网的发展方向,物联网需要哪种编程语言更加合适开发也受到很多程序员的关系。目前觉得最适合就是JavaScript与python两种编程语言。众所周知,物联网开发涉及面庞杂,开发周期比较长,必须寻找一种覆盖面广的

    2020/04/03
  • 使用SVG symbols建立图标系统完整指南入门指南_svg小白基础

    从最开始的使用img图片,到后来的使用css sprite来减少服务器请求,再到流行的图形字体化图标Iconfont。现在,一种全新的图标使用方式开始流行了起来——SVG symbols图标。工作原理SVG symbols的工作原理:symbol元素用来定义一个图形模板对象,它可以用一个use元素实例化。symbol元素对图形的作用是在同一文档中多次使用,s

    2020/03/26
  • Vue template 如何支持多个根结点小白入门_template小白知识

    Vue template 如何支持多个根结点小白入门 如果你试图创建一个没有根结点的 Vue template,像这样: <template> <div>N…

    2020/03/20
  • 编码规范入门基础html代码规范化编写_规范小白教程

    语法缩进使用soft tab(4个空格);嵌套的节点应该缩进;在属性上,使用双引号,不要使用单引号;属性名全小写,用中划线做分隔符;不要在自动闭合标签结尾处使用斜线(HTML5 规范 指出他们是可选的);不要忽略可选的关闭标签;HTML5 doctype在页面开头使用这个简单地doctype来启用标准模式,使其在每个浏览器中尽可能一致的展现;虽然doctyp

    2020/04/03
  • 改变this的指向菜鸟知识_this菜鸟指南

    this是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象。比如,function test() {this.x = 1;
    }
    this 是当前执行上下文中的一部分。this永远指向函数的调用者。随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。1.this指向的形式

    2020/03/31
  • 创客学院使用攻略_一站式IT培训在线学习平台

    创客学院使用攻略 官方网址:http://www.makeru.com.cn/ 简介描述:一站式IT培训在线学习平台 创客学院一站式IT培训在线学习平台,机构课程涵盖嵌入式培训,J…

    2020/03/07
  • css去掉button点击后的蓝框入门指南_button小白攻略

    css控制Button 按钮的点击时候出现蓝色边框的问题,添加css属性,这样在点击安按钮的时候就不会有蓝色边框了。解决办法: button{outline:none;
    }但是button在chrome浏览器下被点击时也会出现边框,即使当时在button上添加{outline:none;}也无法解决问题。那么谷歌浏览器中button按钮的边框如何去除呢?解

    2020/03/29
  • 一对一直播私聊软件【 同城1对1视频】新手入门_直播菜鸟指南

    一对一直播模式一对多就是一个主播需要面对两个以上的用户,而一对一就是主播只会面对一个用户这里建议独占欲强的人,如果你想要和主播搞暧昧的话,就别去一对多了 原因很简单,一对多主播需要服务前来观看的用户,所以根本不可能专注服务你一个人,除非你充的钱多。但充的钱再多也要和其他土豪竞争看看谁才是真真的土豪,所以这就是为啥要选择一对一,除非你真的是土豪中的土豪。 如果

    2020/03/23