js是一个单线程的语言,一次只能完成一个任务
同步模式下,如果一个任务执行时间比较长或者有错误 那么后面的程序都会处于等待的状态
异步模式的出现使得每一个任务可以有自己的回调,当任务执行完毕,不是执行后面的任务 而是执行后面的回调 后面的任务也不是等前面的任务执行完毕就执行,而是等前面的回调执行完毕后在执行本任务 以及本任务的回调任务
异步的解决方案
promise((resolve,reject)=>{}) 这个方法执行后有三种结果 成功时.then() 失败时.catch() 无论成功失败.finally()
用法
new Promise(
/* executor */
function(resolve, reject) {
if (/* success */) {
// ...执行代码
resolve();
} else { /* fail */
// ...执行代码
reject();
}
}
);
.then((value)=>{ //这个value对应的是"成功的值" })是 promise成功时或者执行resolve(()=>{return “成功的值”})
.catch((value)=>{//这个value对应的是"失败的值"})是promise失败时或者执行reject(()=>{return “失败的值”})
async
async 用来声明一个异步的函数 这个函数对应promise的resolve值
比如
async function foo(){
return 11111
}
foo.then((value) =>{ console.log(value)//11111 }) //此时foo()默认返回的111111就是resolve(111111)的值
await
await 等待执行 必须跟在async声明的异步函数中
用法
async function aa(){
await '任务1'
await '任务2'
}
任务1执行完 才会执行任务2