Async/Await应该是目前最简单的异步方案了,ES7 中新增了 async/await 两个关键词。async 能够声明一个异步函数,此函数须要返回一个 Promise 对象。await 能够等待一个 Promise 对象 resolve,并拿到结果。 一个栗子:异步
console.log(1); console.log(2); setTimeout(function(){ console.log(3) },3000); console.log(4); console.log(5)
上边的打印结果你们想必都知道,这是同步状态下的执行顺序async
function p1(){ return new Promise(function(resolve,reject){ setTimeout(function(){ console.log("p1_2000"); resolve() },3000) }) } function p2(){ return new Promise(function(resolve,reject){ setTimeout(function(){ console.log("p2_2000"); resolve() },2000) }) } console.log("start"); p1(); p2(); console.log(end) //start //end //p2_2000 //p1_3000
我们想作的是让他按这个顺序执行下来我们就要用到async、await函数
看代码code
function p1(){ return new Promise(function(resolve,reject){ setTimeout(function(){ console.log("p1_3000"); resolve() },3000) }) } function p2(){ return new Promise(function(resolve,reject){ setTimeout(function(){ console.log("p2_2000"); resolve() },2000) }) } //await 只能出如今异步函数里 async function shi(){ console.log("start") await p1(); await p2(); console.log("end") } p3=shi(); p3.then(function(){ console.log("结束") })
上边函数执行下来就是按照那个顺序下来的,你们记住await 只能出如今异步函数里!配套使用对象