前端面试题合集(难点)

Promise是做什么的?

Promise是异步编程的一种解决方案。
Promise用法:

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。它们是两个函数。
resolve函数作用:将Promise对象的状态从“未完成”变为“成功”,在异步操作成功时调用,并将异步操作的结果,作为参数传递出去。
reject函数作用:将Promise对象的状态从“未完成”变为“失败”,在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

const promise = new Promise(function(resolve,reject){
  if(/*异步操作成功*/){
    resolve(value)
  }else{
    reject(error)
  }
})

Promise自己身上有all、reject、resolve方法,原型上有then、catch方法。

1. Promise.prototype.then()

then()的第一个参数是成功状态的回调函数,第二个参数是失败状态的回调函数。then()返回的是一个全新的Promise实例,因此可采用链式写法。

2. Promise.prototype.catch()

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

3. Promise.resolve()

Promise.resolve('foo')
// 等价于
new Promise(resolve => resolve('foo'))

4. Promise.reject()

const p = Promise.reject('出错了');
// 等同于
const p = new Promise((resolve, reject) => reject('出错了'))

p.then(null, function (s) {
  console.log(s)
});  // 出错了

5.async await

async await也是异步编程的一种解决方案,他不需额外的调用会自动执行并输出结果,它返回的是一个Promise对象。

async函数返回一个 Promise 对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。

  • async单独使用的时候,放在函数前面表示这个函数是一个异步函数,如果async函数有返回结果,必须要用.then()方法来承接

  • async await搭配使用的时候,await是等待此函数执行后,再执行下一个,可以把异步函数变成同步来执行(前提是await后的函数是返回的promise,如果跟的是普通函数就不会同步执行),控制函数的执行顺序。await一定要搭配async使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、CSS问题 1.flex布局 display:flex; 在父元素设置,子元素受弹性盒影响,默认排成一行,如果...
    陈二狗想吃肉阅读 3,987评论 0 9
  • ES6有哪些新特性?不一样的变量声明:const和let模板字符串( `` )箭头函数(Arrow Functio...
    Drazy嘀嘀嘀阅读 2,920评论 0 1
  • 1、 [1,2,3].map(parseInt)输出结果? 答案:1,NaN,NaN 解析: ar...
    像鱼_真好听阅读 3,696评论 0 1
  • 2.什么是函数柯里化? 答:是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接...
    Rain_Wuu阅读 6,804评论 1 8
  • 简单面试题 1.map与foreach区别、 共同点1.都是循环遍历数组中的每一项。2.forEach() 和 m...
    栀璃鸢年_49a3阅读 5,963评论 2 18