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