• 【校招VIP】前端ES6相关之Promise


    考点介绍:

    我们知道Promise与Async/await函数都是用来解决JavaScript中的异步问题的,从最开始的回调函数处理异步,到Promise处理异步,到Generator处理异步,再到Async/await处理异步,每一次的技术更新都使得JavaScript处理异步的方式更加优雅,从目前来看,Async/await被认为是异步处理的终极解决方案,让JS的异步处理越来越像同步任务。

    本期分享的前端ES6相关之Promise,分为试题、文章以及视频三部分。

    答案详情解析和文章内容可扫下方二维码或链接即可查看!

    一、考点题目

    1、promise解决异步操作的优点?

    解答:
    1、链式操作减低了编码难度
    2、代码可读性明显增强

    2、promise对象的三种状态?

    解答:
    1、pending(进行中)
    2、fulfilled(已成功)
    3、rejected(已失败)

    3、promise对象的特点?

    解答:对象的状态不受外界影响,只有异步操作的结果,可以决定当前是哪一种状态......

    4、Promise构造函数的方法?并分别解释其用法

    解答:Promise构造函数存在以下方法:all()、race()、allSettled()、resolve()、reject()、try()......

    5、Promise 中reject 和 catch 处理上有什么区别?

    解答:reject 是用来抛出异常,catch 是用来处理异常
    reject 是 Promise 的方法,而 catch 是 Promise 实例的方法
    reject后的东西,一定会进入then中的第二个回调,如果then中没有写第二个回调,则进入catch
    网络异常(比如断网),会直接进入catch而不会进入then的第二个回调

    6、Promise、Generator、Async有什么区别?

    解答:1、Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它就是为了解决回调函数产生的问题而诞生的。

    有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象提供统一的接口,使得控制异步操作更加容易。
    但Promise也有它的缺点:Promise的内部错误使用try catch捕获不到,只能只用then的第二个回调或catch来捕获

    2、Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。Generator 函数将 JavaScript 异步编程带入了一个全新的阶段。
    Async/await其实就是上面Generator的语法糖,async函数其实就相当于funciton *的作用,而await就相当与yield的作用。而在async/await机制中,自动包含了我们上述封装出来的spawn自动执行函数。

    7、说一下promise基本规则。

    解答:1. 首先Promise构造函数会立即执行,而Promise.then()内部的代码在当次事件循环的结尾立即执行(微任务)。

    2. promise的状态一旦由等待pending变为成功fulfilled或者失败rejected。那么当前promise被标记为完成,后面则不会再次改变该状态。

    3. resolve函数和reject函数都将当前Promise状态改为完成,并将异步结果,或者错误结果当做参数返回。

    4. Promise.resolve(value)
    返回一个状态由给定 value 决定的 Promise 对象。如果该值是 thenable(即,带有 then 方法的对象),返回的 Promise 对象的最终状态由 then 方法执行决定;否则的话(该 value 为空,基本类型或者不带 then 方法的对象),返回的 Promise 对象状态为 fulfilled,并且将该 value 传递给对应的 then 方法。通常而言,如果你不知道一个值是否是 Promise 对象,使用 Promise.resolve(value) 来返回一个 Promise 对象,这样就能将该 value 以 Promise 对象形式使用。

    8、promise有几种状态,什么时候会进入catch?

    解答:三个状态:pending、fulfilled、reject
    两个过程:padding -> fulfilled、padding -> rejected
    当pending为rejectd时,会进入catch 

    9、我们之前遇到的哪些东西本身就是一个 promise 对象?

    解答:jq的ajax请求本身就是一个promise对象 所以可以直接用.then
    axios也是一个promise对象
    原生的ajax以及小程序的wx.request请求都不是promise对象不能用.then的写法,如果想用链式写法,就要自己封装一个promise。

    (答案点击下方链接或者扫海报二维码查看哦)

    二、考点文章

    1、ES6相关信息

    提供了更加方便的新语法**弥补** JS 语言本身的**缺陷**,新增了便捷的语法……

    2、【校招VIP】Es6 赋值方法

    对象 赋值,对象中增加字段和值……

    (扫下方海报二维码查看完整版)

    三、考点视频

    1、前端校招的特点、考点和职业发展

    前端是IT校招中目前性价比最高的职位,对所学专业要求不高,考点难度较小,且需求量大……

    更多资讯可搜索校招VIP小程序查看哦!
    移动端链接: https://www.naoffer.com/dTopic/detail/695
    PC端链接:https://www.naoffer.com/dTopic/detail/695

     

     

  • 相关阅读:
    【Java】PAT(Basic Level) 1016 部分A+B
    Configuration涉及的Full&Lite模式
    【寸铁的刷题笔记】图论、bfs、dfs
    RabbitMQ
    华为机试真题 C++ 实现【日志首次上报最多积分】【2022.11 Q4 新题】
    SparkOnHive_数据多列转行操作应用
    保姆级微服务部署教程
    100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描
    【Win】Microsoft Spy++学习笔记
    机械转行网络安全自学经历,零基础学网络安全,血泪总结的干货
  • 原文地址:https://blog.csdn.net/shuize123/article/details/127070293