day27
js异步编程
js是单线程的,所以如果没有异步编程,碰到需要耗时很多的事件的时候就会出现浏览器阻塞的情况,需要很长的时间去处理。
promise
promise有三个状态,进行种、已完成、已失败,状态一但确定后就无法改变
let promise = new Promise(resolve, reject) {
if(true) {//异步操作成功,此处的代码为同步操作
resolve();
} else {
reject();
}
}
promise.then((res) => {// 此处的代码为异步操作的微任务
console.log(res); // promise实例成功
}).catch((error) => {
console.log(error); // promise实例失败
})
generator
可以理解为状态机,调用generator函数返回值是迭代器对象,每调用一次迭代器对象next方法就会执行一个状态
function* generator(){
yield '1';
yield '2';
yield '3';
}
console.log(generator().next());
async
配合await使用,是一个语法糖,内部封装了generator
async function findAll(){
let res = await axios.get();
}