广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JS 9个Promise面试题
  • 263
分享到

JS 9个Promise面试题

2024-04-02 19:04:59 263人浏览 八月长安
摘要

目录1. 多个.catch2. 多个.catch3. 链接.then和.catch4. 链接.catch5. 多个.catch6..then之间的流程7..then之间的流程8..t

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))

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

  • [ ] 打印一次消息
  • [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
  • [ ] 程序退出

解析:

使用 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

解析

当链接.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 => )。

为了将值传递给下一个.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 => )。

为了将值传递给下一个.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))

以上就是js 9个Promise面试题的详细内容,更多关于JS Promise面试题的资料请关注编程网其它相关文章!

--结束END--

本文标题: JS 9个Promise面试题

本文链接: https://www.lsjlt.com/news/125286.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS 9个Promise面试题
    目录1. 多个.catch2. 多个.catch3. 链接.then和.catch4. 链接.catch5. 多个.catch6..then之间的流程7..then之间的流程8..t...
    99+
    2022-11-12
  • JS中Promise面试题有哪些
    这篇文章给大家分享的是有关JS中Promise面试题有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JavaScript是什么JS是JavaScript的简称,它是一种直译式的脚本语言,其解释器被称为Java...
    99+
    2023-06-14
  • 9个常见的Redis面试
    9个常见的Redis面试"刁难"问题 1 Redis有哪些数据结构? 字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。如果你是Redis中高级用户...
    99+
    2022-10-18
  • 撩课-Python-每天5道面试题-第9
    一. Python程序中, 文件的处理步骤是什么 打开 open("文件","模式") 读写 2.1 读 f.read(字节数) 字节数默认是文件内容长度 下标会自动后移 f.readline([limit]) 读取一行数据 lim...
    99+
    2023-01-30
    面试题 撩课 Python
  • JS获取Promise对象里面的值问题
    目录JS获取Promise对象里面的值获取Promise{<pending>}的值问题解决总结JS获取Promise对象里面的值 1、以下代码返回值为: const res = ...
    99+
    2023-01-28
    JS获取Promise对象的值 JS Promise获取值 获取Promise对象的值
  • JS常见面试试题有哪些
    这篇文章主要介绍了JS常见面试试题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:JavaScript面试题总结1,首先是数组...
    99+
    2022-10-19
  • Promise面试题详解之控制并发
    前言 在写这篇文章的时候我有点犹豫,因为先前写过一篇类似的,一道关于并发控制的面试题,只不过那篇文章只给出了一种解决方案,后来在网上又陆续找到两种解决方案,说来惭愧,研究问题总是浅尝...
    99+
    2022-11-12
  • ES6中Promise、async和await面试题整理
    目录出题目的:知识点:代码:附:promise与async await结合使用总结学习过程中遇到的一些基础的Promise、async、await面试题整理。 出题目的: 考察 Pr...
    99+
    2023-02-22
    es6 promise async es6 async await es6中的promise
  • Python开发面试题:面试中 8 个必考问题
    ‘’金三银四‘’工作的人没有不知道的吧,其实7月也是跳槽面试的高峰期,咱们的学生大军也加入了找工作的浪潮。这里根据经验和实际情况总结了一下在Python面试中,关于Python开发面试题必考的8个问题,有需要的小伙伴,敲黑板认真看哦!...
    99+
    2023-06-02
  • JavaScript面试必备技巧之手写一个Promise
    目录基本实现实现resolve和reject状态不可变then其他方法很多同学在面试的时候都会被要求手写一个Promise,那么今天我总结了一些手写Promise的方法,可以跟着我的...
    99+
    2023-02-08
    JavaScript实现手写Promise JavaScript手写Promise JavaScript Promise
  • 面试题分享,准备一个月拿下腾讯、华为等9个大厂offer(附答案)
    ...
    99+
    2023-06-04
  • python list的一个面试题
    面试题''' 一个list,里面的数字偶数在左边,奇数在右边,不借助其他列表 ''' def userlist(add_list): if type(add_list)==list: if len(add_lis...
    99+
    2023-01-30
    面试题 python list
  • 3个CCIE出的面试题
    3个CCIE出的面试题 1. 现在的6509及7609,SUP720交换带宽去到720G,是不是可以说7609/6509可以取代一部分GSR的地位?  2. isis level1 的路由表包括哪此路由?有多个level-1-2出口时,其它...
    99+
    2023-01-31
    面试题 CCIE
  • 分享面试官常用16个c/c++面试题
    目录1. C中static有什么作用2.C++中const有什么用?3. C与C++各自是如何定义常量的?有什么不同?4. 既然C++中有更好的const为什么还要使用宏?5. C+...
    99+
    2022-11-12
  • 分享9个实战及面试常用Linux Shell脚本编写
    注意事项 1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格;多加注释说明。 3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。 4)默认变量是全局的,在函数中变量local指...
    99+
    2022-06-04
    shell 脚本编写 linux shell 脚本
  • 前端常见面试题之async/await和promise的区别
    目录asyncasync函数定义作用async 函数中 return 值如何接受方式一方式二awaitawait定义作用关于await的注意点[[promiseValue]][pro...
    99+
    2022-11-13
  • ES6中Promise、async和await面试题实例代码分析
    这篇“ES6中Promise、async和await面试题实例代码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ES6中...
    99+
    2023-07-05
  • 面试常见的js算法题有哪些
    这篇文章主要介绍面试常见的js算法题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.排序一般都是给个数组然后排序,有的从小到大,有的从大到小。一定要看清楚。以下都是从小到大的...
    99+
    2022-10-19
  • 一道面试题考验JS的基本功
    这篇文章主要讲解了“一道面试题考验JS的基本功”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“一道面试题考验JS的基本功”吧!// 求出如下题目结果...
    99+
    2022-10-19
  • JS前端面试题详解之手写bind
    目录bind 的用法this 的指向问题积累参数实现一个 bind结尾大家好,我是前端西瓜哥,今天我们用 JS 来实现内置的 bind 方法。 bind 的用法 在实现之前,我们先学...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作