web开发经常用到异步编程,一方面不阻塞代码,另一方面也带来了
回调地狱
—差劲的代码可读性,es6有了async和await让开发者像写同步代码一样写异步代码
async 函数
定义:在普通函数前加一个async
关键字
async function getName(){
return "hezebing";
}
调用:与普通函数无区别
getName();//返回一个promise对象
结合await
定义:await + 返回promise的异步调用;
表示等待异步函数执行完后,才直接下面的代码。
function getInfomation(){
return new Promise((res,rej)=>{
setTimeout(()=>{
res('hello,i am back after 3 seconds')
},3000)
})
}
async function main(){
let msg = await getInfomation();
console.log('this is async function returned information: ' + msg);
}
main();
总结
- await + 异步调用 只能用在async函数里。
- await + async极大地方便了开发者处理有依赖关系的http请求(
举个傻傻的例子:先请求用户名,再根据用户名请求用户信息
) - 流程变为:一个整体操作(async函数)+若干个异步请求(
仅限于有依赖关系的请求之间,如果不是,那么别用.
)。