考核内容:Promise异步编程的使用
题发散度: ★★
试题难度: ★★
解题思路:
Promise 是异步编程的一种解决方案,ES6 将其写进了语言标准。
所谓Promise,简单说就是一个容器,里面保存着异步操作的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
Promise对象有以下两个特点。
(1)对象的状态不受外界影响。
Promise对象代表一个异步操作,有三种状态:
- pending(进行中)
- fulfilled(已成功)
- rejected(已失败)
只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态
(2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。
Promise对象的状态改变,只有两种可能:
- 从pending变为fulfilled
- 从pending变为rejected
只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果.
如:
执行结果:
从以上实例中可以看到,
- Promise是异步的
- then 是fulfilled(已成功)状态,返回方法是 resolve(value);
- catch 是 rejected(已失败)状态,返回方法是 reject(error);
Promise.all()方法
用于将多个 Promise 实例,包装成一个新的 Promise 实例。
all方法使用“一个数组作为参数”,每个节点都是 Promise 实例
Promise.all() 的状态由每个节点决定,分成两种情况
- 所有的节点状态都是 fulfilled,Promise.all() 的状态才会变成fulfilled
调试结果
2. 只要有一个节点是rejected,Promise.all() 的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给Promise.all() 的回调函数。
在上面的数据中加一个 0
调试结果:
Promise.race()方法
同样是将多个 Promise 实例,包装成一个新的 Promise 实例。
只要节点状态之中有一个实例率先改变状态(不论是fulfilled(已成功)或rejected(已失败)),Promise.race()的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给Promise.race()的回调函数。
调试结果:
Promise.allSettled()方法
方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。
所有节点状态都返回结果,不管是fulfilled还是rejected,Promise.allSettled() 实例才会结束。该方法由 ES2020 引入。
调试结果:
答案: 错误的是
D. Promise.allSettled()方法接受一组 Promise 实例作为参数,包装成一个新的 Promise 实例。每个实例的状态是fulfilled时,才会对应返回状态值;
相关推荐:
前端测试题:有关于前端对web安全及防护说明,下面错误的是?
前端测试题:有关于WEB服务中,HTTP和HTTPS的说法,错误的是?
前端测试题:对于WEB服务有关http的响应状态码及含义,说法有误的是?
前端测试题:有关于get、post的区别,下面说法错误的是?
前端测试题:有关于js中跨域请求的说法,错误的是?
前端测试题:有关于下面盒模型,说法错误的是?
前端测试题:关于WEB中常用的度量单位,表述错误的是?
前端测试题:关于javascirpt中,typeof判断数据类型中不可能出现的是
前端测试题:var str=’shuke‘ 字符串值(shuke)转为变量名的方法正确的是?
前端测试题:有关于JS 中的主要错误,表述错误的是?
前端测试题:有关于双向绑定功能在ES6中实现的数据代理(数据劫持),表述有错误的是?
前端测试题:以下浏览器对js显示数据方法,表述错误的是?
前端测试题:关于JAVASCRIPT中以下操作输出的是TRUE的是?
前端测试题: 关于this的用法下面说法正确的是?
前端测试题:有关于JAVASCRIPT闭包说明正确的是?
前端测试题:如何理解JS中对数据的深浅拷贝?
前端测试题: 关于定义常量的关键字const,定义一个Object对象,再对属性的值进行修改,下列说法正确的?
前端测试题:ES6中想要获取Map实例对象的成员数,利用的属性是?
前端测试题:module模块中的注意事项,下列说法错误的?
前端测试题:module模块中,对下列语句的描述,错误的是?
前端测试题:关于ES6的module模块,下列说法错误的是?
前端测试题:在Generator函数中," yield* "语句的作用是?
前端测试题:Generator函数的yield关键字的作用是?
前端测试题:关于新特性Generator函数的描述,错误的是?
前端测试题:关于Iterator遍历器的说法,错误的是?
前端测试题: 下列数据结构中,不能被for...of遍历的是?
前端测试题:在类的继承中,关于super的说法错误的是?
前端测试题:下面关于类class的描述,错误的是?
前端测试题:关于Promise对象的状态,下列说法错误的是?
前端测试题:关于WeakMap结构,下列说法错误的是?
前端测试题:下列Map结构的键名数据类型,描述错误的是?
前端测试题:关于Map结构的介绍,下面说法错误的是?
前端测试题: 关于WeakSet结构,说法错误的是?
前端测试题: 关于set结构,下面说法错误的是?
前端测试题: 关于for...of的简述,说法错误的是?
前端测试题: 关于Proxy代理,下面说法错误的是?
前端测试题: 下面Symbol运算结果,结果为true的是?
前端测试题: 关于Symbol,错误的说法是?
前端测试题: 关于箭头函数的描述,错误的是?
前端测试题: 数组扩展的fill( )函数,[1,2,3].fill(4)的结果是?
前端测试题: 数组的扩展中,不属于用于数组遍历的函数的是?
企业面试题: 关于对象的Object.is函数,错误的是?
关于对象的扩展,错误的是?
企业面试题: 对前端工程师这个职位是怎么样理解的
企业面试题: 为什么要初始化CSS样式
企业面试题:CSS中 link 和@import 的区别是什么
企业面试题:position的absolute与fixed共同点与不同点
企业面试题:用css实现div在不同分辨率屏幕上下左右居中
企业面试题: 解释css sprites 如何使用?
企业面试题: 1&&2,1||2代码的输出值是?
企业面试题: cookies,sessionStorage 和 localStorage 的区别?
企业面试题: 关于JS在使用过程中 0.1+0.2!=0.3 的问题
企业面试题:js编写数组去重方法
企业面试题: 实现一个事件委托(事件代理)
企业面试题:如何显示/隐藏一个DOM元素
企业面试题:如何实现浏览器内多个标签页之间的通信
企业面试题:去除字符串空格
企业面试题:关于js闭包
企业面试题:如何实现实现1+2+......+n
企业面试题:变量作用域