async是Generator的语法糖,两者写法非常相似,async就是将Generator的*换成了async讲yield换成了await,还有一点就是async不需要next
例如我们请求两个个json文件,先用Genertator的方式写一下
//封装两个个promise对象请求 var getData = function () { return new Promise((resolve, reject) => { $.ajax({ url: './data.json', success(data) { resolve(data) }, error(error) { reject(error) }, }) }) } var getDatas = function () { return new Promise((resolve, reject) => { $.ajax({ url: './data1.json', success(data) { resolve(data) }, error(error) { reject(error) }, }) }) }
Generator写法:
// 使用Generator生成器 function* gen() { var result = yield Promise.all([getData(), getDatas()]); } var g = gen(); g.next().value.then(res => { console.log(res) })
结果如下
Generator明显比较麻烦,需要先执行next然后才可以拿到数据
async写法:
async function getJsons(){ try{ const res=await Promise.all([getData(), getDatas()]); return res; }catch(error){ return error; } } getJsons().then(respon=>{ console.log(respon) })
async可以直接执行不需要next,如果需要捕获错误的话,使用try...catch语句
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接