AsynclAwait

一、同步异步的理解

同步:同步就是在后一个任务等待前一个任务执行完毕后,再执行,执行顺序和任务的排列顺序一致。 同步案例:for循环

比如: for(var i=0;i<5;i++){ console.log(i) } console.log("hello") 就会先执行完for循环,在执行console.log 复制代码

异步:异步是非阻塞的,不用等到现在的任务执行完,就可以执行后面的内容。 异步案例:ajax,setTimeout

console.log(a) setTimeout(()=>{ console.log("我来了") },3000) console.log(b) 执行顺序为a,b,"我来了" 复制代码

二、async/await是什么

async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。async 函数返回的是一个 Promise 对象

典型的异步函数的调用

$.get('/',function(data){console.log(data.length)}) 还有setTimeout,promise等 复制代码

Async/Await的语法:

用来处理异步的,是(Generator函数)的改进,原理也是promise。 asny function fn(){ var res = await fn()//等待fn执行完才会执行后面的代码 console.log("123"),await会阻塞掉后面的代码 } Generator:生成器,可以将异步回调代码变成“同步”代码 复制代码

三、 async函数总是会返回一个promise,返回一个promise有三种情形:

1)async函数中显示的return一个promise: 2)如果return的是一个具体值,则会转换为一个resolve为该值的promise; 3)其它则会转换为一个resolve为undefined的promise。 复制代码

四、 await 的缺点:

await只能放在async函数里

await拿到的是resolve的数据或者说传给then的数据,reject(失败)的需要靠try,catch的方法。

五、为什么要使用await

为了使我们的异步代码,更像同步的代码

await是直接获取多个promise的结果的,可以直接await Promise.all()

猜你喜欢

转载自www.cnblogs.com/mzj143/p/13160376.html