JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了es6学习笔记之Async函数的使用示例大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

异步操作是 JavaScript 编程的麻烦事,麻烦到一直有人提出各种各样的方案,试图解决这个问题。

从最早的回调函数,到 Promise 对象,再到 Generator 函数,每次都有所改进,但又让人觉得不彻底。它们都有额外的复杂性,都需要理解抽象的底层运行机制。

异步I/O不就是读取一个文件吗,干嘛要搞得这么复杂?异步编程的最高境界,就是根本不用关心它是不是异步。

async 函数就是隧道尽头的亮光,很多人认为它是异步操作的终极解决方案。下面就来看看关于async函数的两个栗子:

栗子一:从豆瓣 API 获取数据

{ var xhr = new XMLhttprequest(); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { if (xhr.status >= 200 && xhr.status < 300) { var response; try { response = JSON.parse(xhr.responseText); } catch (E) { reject(E); } if (responsE) { resolve(response,xhr.status,xhr); } } else { reject(xhr); } } }; xhr.open('GET','https://api.douban.com/v2/user/aisk',truE); xhr.setrequestHeader("Content-Type","text/plain"); xhr.send(data); }); }; (async function() { try { let result = await fetchDoubanApi(); console.log(result); } catch (E) { console.log(E); } })();

栗子二:根据电影文件名,自动下载对应的海报

exts.includes(path.parse(v).ext))); }); }); }; // 获取海报 var getPoster = function (movieName) { let url = `https://api.douban.com/v2/movie/search?q=${encodeURI(movieName)}`; return new Promise(function (resolve,reject) { request({url: url,json: truE},function (error,response,body) { if (error) return reject(error); resolve(body.subjects[0].images.largE); }) }); }; // 保存海报 var savePoster = function (moviename,url) { request.get(url).pipe(fs.createWriteStream(path.join(movieDir,moviename + '.jpg'))); }; (async () => { let files = await readFiles(); // await只能使用在原生语法 for (var file of files) { let name = path.parse(filE).name; console.log(`正在获取【${name}】的海报`); savePoster(name,await getPoster(Name)); } console.log('=== 获取海报完成 ==='); })();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对菜鸟教程的支持。

大佬总结

以上是大佬教程为你收集整理的es6学习笔记之Async函数的使用示例全部内容,希望文章能够帮你解决es6学习笔记之Async函数的使用示例所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。