Promise面试基础题

154 阅读1分钟

promise封装延时5秒输出一个1?

var p = new Promise((resolve, reject) => {
  setTimeout(() => {
    console.log(1)
  }, 5000)
})

console.log(typeof(p))
console.log(Object.prototype.toString.call(p))
console.log(p instanceof Promise)
console.log(p instanceof Object)

Promise是为了解决回调地狱而诞生的。

Promise有3种状态:pending(等待),fulfilled(已完成),rejected(已拒绝)

then方法可以实现链式操作,第一个回调函数完成以后,会将返回结果作为参数,传给下一个回调函数。

catch方法用来捕捉错误,Promise对象的错误具有“冒泡”性质,会一直传递到被捕获为止。

Promise.all方法用于将多个异步操作(或Promise对象),包装成一个新的Promise对象,在所有异步操作都完成之后,新的Promise对象的状态才会变成fulfilled,只要其中一个出现错误或者失败,新的Promise对象的状态就会变成rejected。

Promise.resolve方法会将需要转换的对象转换为Promise对象。

async函数会返回一个Promise对象,当遇到await时,会先执行await后面的操作,等完成之后在继续执行后面的语句。

优先级排序:promise.Trick()>promise的回调>async>setTimeout>setImmediate