更多课程 选择中心

Web培训
美国上市教育机构

400-111-8989

Web培训

Web前端面试题汇总之JS篇(六)

  • 发布:Web前端培训
  • 来源:小小张 程序员成长指北
  • 时间:2019-06-14 16:17

今天小编要跟大家分享的文章是关于Web前端面试题JS相关知识的文章。在之前的文章中小编也为大家分享过一些相关面试题,如果你想参加Web前端面试,正在做面试准备,就来看一看小编今天为大家准备的文章吧!

Web前端面试题汇总之JS篇(六)

关于Promise你了解什么?

前端面试过程中,基本都会问到 Promise,如果你足够幸运,面试官问的比较浅,仅仅问 Promise 的使用方式,那么恭喜你。事实上,大多数人并没有那么幸运, 很多面试官在promise这块都是由浅入深的提问.

了解Promise吗?

Promise 解决了什么问题?

Promise 如何使用?

Promise 常用的方法有哪些?它们的作用是什么?

Promise 在事件循环中的执行过程是怎样的?

1. 了解Promise吗?

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理,让开发者不用再关注于时序和底层的结果。Promise的状态具有不受外界影响和不可逆两个特点。

2.Promise 解决了什么问题?

Promise解决了回调地狱的问题, 提高代码的可读性以及解决信任度问题. 传统的回调有五大信任问题:

1. 调用回调过早

2. 调用回调过晚(或者没有被调用)

3. 调用回调次数过多或过少

4. 未能传递所需的环境和参数

5. 涂掉可能出现的错误和异常

3. Promise 如何使用?

ES6规定,Promise对象是一个构造函数,用来生成Promise实例。下面代码创造了一个Promise实例。

var promise = new Promise(function(resolve, reject) {

// ... some code

if (/* 异步操作成功 */){

resolve(value);

} else {

reject(error);

}

});

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。它们是两个函数,由JavaScript引擎提供,不用自己部署。

resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从Pending变为Resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从Pending变为Rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

4. Promise 常用的方法有哪些?它们的作用是什么?

· Promise.prototype.then

Promise 实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的。它的作用是为 Promise 实例添加状态改变时的回调函数。then方法的第一个参数是resolved状态的回调函数,第二个参数(可选)是rejected状态的回调函数。

· Promise.prototype.catch

Promise.prototype.catch方法是.then(null, rejection)或.then(undefined, rejection)的别名,用于指定发生错误时的回调函数。

getJSON('/posts.json').then(function(posts) {

// ...

}).catch(function(error) {

// 处理 getJSON 和 前一个回调函数运行时发生的错误

console.log('发生错误!', error);

});

上面代码中,getJSON方法返回一个 Promise 对象,如果该对象状态变为resolved,则会调用then方法指定的回调函数;如果异步操作抛出错误,状态就会变为rejected,就会调用catch方法指定的回调函数,处理这个错误。

· Promise.all

Promise.all方法用于将多个 Promise 实例,包装成一个新的 Promise 实例, 返回最先执行结束的 Promise 任务的结果,不管这个 Promise 结果是成功还是失败。

· Promise.race

Promise.race方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。如果全部成功执行,则以数组的方式返回所有 Promise 任务的执行结果。如果有一个 Promise 任务 rejected,则只返回 rejected 任务的结果。

5. Promise 在事件循环中的执行过程是怎样的

var promise = new Promise((resolve, reject)=>{

console.log('我是promise任务');

resolve('resolved')

})

promise.then(res =>{

console.log(res)

})

console.log("我是同步任务");

setTimeout(()=>{

console.log("我是延时任务");

}, 0)

上面代码的执行顺序是: 我是promise任务、我是同步任务、resolved、我是延时任务。

Promise 新建后立即执行,立即 resolve 的 Promise 对象,是在本轮“事件循环”(event loop)的结束时,而不是在下一轮“事件循环”的开始时;setTimeout在下一轮“事件循环”开始时执行。

以上就是小编今天为大家分享的关于Web前端面试题汇总之JS篇(六)的文章,本篇文章主要为大家介绍了一些关于JS中关于Promise的相关知识,希望本篇文章能够对正准备参加Web前端面试的小伙伴们有所帮助。想要了解更多Web前端面试相关知识记得关注达内Web培训官网!最后祝愿小伙伴们能够面试成功,顺利找到工作!

【免责声明:本文图片及文字信息均由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。】

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Web前端面试题汇总之JS篇(五)
下一篇:Web前端面试一定会问到的JavaScript 知识点!

帮助Web前端程序员面试成功的技巧有哪些

Web前端面试会遇到的知识点汇总

面试中如何避免因上家公司在职时间短而扣分?

Web面试中如何回答你有什么缺点的问题?

选择城市和中心
黑龙江省

吉林省

河北省

贵州省

云南省

广西省

海南省