专栏首页张培跃web前端面试题对答篇一:谈谈你对Promise的理解

web前端面试题对答篇一:谈谈你对Promise的理解

回答这个问题时,个人不建议单纯的从Promise的细节知识点答起,因为这个问题的本质是拥有一定宏观性的,如果仅仅回复一些知识点恐怕是满足不了面试官胃口的。

当然,如果这个问题回答不到点上,那么后续面试官极有可能会抛出一些相关知识难点来对你进行打压。倘若知识点也回答不出来,那么只能出门右拐了……

所以建议你结合自身项目工作经验可以考虑从以下几个点去回答即可:

1、Promise 是一个构造函数,我们可以通过该构造函数来生成Promise的实例。

2、Promise 即承诺,后续必要兑现,一旦兑现则不可更改!其状态有三:pending(等待)、resolved(成功)、rejected(失败)。

3、Promise 是对回调函数的一种封装,是对异步编程的一种改进(传统解决异步编程的方式是通过回调函数,而回调嵌套过多会导致回调地狱(callbackhell)),我们可以通过Promise将自己的程序以同步的方式表达出来,从而可以解决代码臃肿及可读性差的问题。

4、Promise 的实例可以看做是一个状态展示器,我们可以将拥有状态及改变状态的业务通过Promise来实现,然后再结合async function进一步提升程序的可读性及易维护性。

5、与前端相关的很多技术体系库均采用了Promise对象,比如Axios、antd等等,所以了解、熟练并合理的使用它是一名合格前端必备的技能。

6、在实际项目的开发中经常会遇到继某一个函数执行结果之后,再进行入后续操作的场景,通过Promise就是一种非常好的解决方案。比如我们可以通过Promise对ajax进行封装用于实现业务逻辑与数据的分离。

7、Promise虽然解决了我们项目开发中的很多问题,但我们也不能无脑的滥用。比如Promise.all,如果参数中promise有一个失败(rejected),则此实例回调必然失败(reject),就不会再执行then方法的回调了。在实际中可能只是一个不关键的数据加载失败,往往会导致其他所有的数据不会显示,使得项目的容错性大大降低。所以我个人在开发过程中只会在必须依赖这几个步骤全部加载成功后才能继续向下执行的场景中采用它,比如图片的预加载功能。

本文分享自微信公众号 - 张培跃(zhangpeiyue8),作者:张培跃

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 前端开发真的没有后端工资高?

    这是来自知乎的问题,是一个大二学生问的,说老师在讲课时说,从工资来看,后端开发要比前端高,并且说,掌握公司核心技术的都是后端。他问事实是否真的如此,然后问该如何...

    用户1272076
  • web前端面试题:您能读懂的Promise源码实现(手写代码)

    2、Promise 对象存在三种状态:Pending(进行中)、resolved(已成功)、rejected(已失败)。我们可以将其设置为三个常量:

    用户1272076
  • 1、TypeScript初识及环境搭建

    TypeScript最近很火,有很多开源的项目也是由其开发的,如果你是一名前端开发工程师或准备要成为一名前端开发工程师的话,现在如果再不学习TypeScript...

    用户1272076
  • 你真的懂Promise吗

    在异步编程中,Promise 扮演了举足轻重的角色,比传统的解决方案(回调函数和事件)更合理和更强大。可能有些小伙伴会有这样的疑问:2020年了,怎么还在谈论P...

    浪里行舟
  • 你不知道的JavaScript(中卷)二

    1.最常见的块单位是函数。从现在到将来的“等待”,最简单的方法(但绝不是唯一的,甚至也不是最好的)是使用一个通常称为回调函数的函数

    硬核项目经理
  • 当面试官问你Promise的时候,他究竟想听到什么?

    用户1687375
  • Promise的三兄弟:all(), race()以及allSettled()

    从ES6 开始,我们大都使用的是 Promise.all()和Promise.race(),Promise.allSettled() 提案已经到第4阶段,因此将...

    Fundebug
  • es6 Promise

    Promise 是异步编程的一种方案,简单说就是一个容器,里面保存着某个未来才会结束的事件的 结果,Promise 是一个对象,从它,可以获取异步操作的消息。 ...

    用户1197315
  • Salesforce Javascript(一) Promise 浅谈

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects...

    用户1169343
  • javascript基础修炼(7)——Promise,异步,可靠性

    Promise技术是【javascript异步编程】这个话题中非常重要的,它一度让我感到熟悉又陌生,我熟悉其所有的API并能够在编程中相对熟练地运用,却对其中原...

    大史不说话

扫码关注云+社区

领取腾讯云代金券