promise resolve(解析)和 reject(拒绝)
Promise 是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层
嵌套的回调函数,要是为了解决异步处理回调地狱(也就是循环嵌套的问题)而产生的
Promise 有几种状态
三个状态:pending、fulfilled、reject
两个过程:padding -> fulfilled、padding -> rejected
Promise 什么时候会进入 catch
当 pending 为 rejectd 时,会进入 catch
setTimeout、Promise、Async/Await 的区别
事件循环中分为宏任务队列和微任务队列
宏任务(macrotask):在新标准中叫 task
主要包括:script(整体代码),setTimeout,setInterval,setImmediate,I/O,ui rendering
微任务(microtask):在新标准中叫 jobs
主要包括:process.nextTick, Promise,MutationObserver(html5 新特性)
setTimeout、Promise、Async/Await 的区别
setTimeout 的回调函数放到宏任务队列里,等到执行栈清空以后执行
Promise.then 里的回调函数会放到相应宏任务的微任务队列里,等宏任务里面的同步代码执
行完再执行
async 函数表示函数里面可能会有异步方法,await 后面跟一个表达式
async 方法执行时,遇到 await 会立即执行表达式,然后把表达式后面的代码放到微任务队
列里,让出执行栈让同步代码先执行
手写一个 Promise
var Promise = new Promise ((resolve, reject) => {
if (操作成功) {
resolve(value)
} else {
reject(error)
}
})
Promise.then ( function (value) {
// success
}, function (value) {
// failure
})