JavaScript
发布时间:2022-04-16 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了es6学习笔记之Async函数的使用示例,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
前言
异步操作是 JavaScript 编程的麻烦事,麻烦到一直有人提出各种各样的方案,试图解决这个问题。
从最早的回调函数,到 Promise 对象,再到 Generator 函数,每次都有所改进,但又让人觉得不彻底。它们都有额外的复杂性,都需要理解抽象的底层运行机制。
异步I/O不就是读取一个文件吗,干嘛要搞得这么复杂?异步编程的最高境界,就是根本不用关心它是不是异步。
async 函数就是隧道尽头的亮光,很多人认为它是异步操作的终极解决方案。下面就来看看关于async函数的两个栗子:
栗子一:从豆瓣 API 获取数据
{
var xhr = new XML
httprequest(
);
xhr
.onreadystatechange = function()
{
if (xhr.readyState === 4)
{
if (xhr.status >= 200 && xhr.status < 300)
{
var response;
try
{
response = JSON.parse(xhr.responseText
);
} catch (
E) {
re
ject(
E);
}
if (respons
E) {
resolve(response,xhr.status,xhr
);
}
} else
{
re
ject(xhr
);
}
}
};
xhr
.open('GET','
https://api.douban.com/v2/user/aisk',tru
E);
xhr.set
requestHeader("Content-Type","text/plain"
);
xhr.send(data
);
}
);
};
(async function()
{
try
{
let result = await fetchDoubanApi(
);
console.log(result
);
} catch (
E) {
console.log(
E);
}
})(
);
栗子二:根据电影文件名,自动下载对应的海报
ext
s.includes(path.parse(v).ext))
);
}
);
}
);
};
// 获取海报
var getPoster = function (movie
Name) {
let url = `
https://api.douban.com/v2/movie/search?q=$
{encodeURI(movie
Name)}`;
return new Promise(function (resolve,re
ject)
{
request(
{url: url,json: tru
E},function (error,response,body)
{
if (error) return re
ject(error
);
resolve(body.sub
jects
[0].image
s.larg
E);
})
}
);
};
// 保存海报
var savePoster = function (movi
ename,url)
{
request.get(url).pipe(f
s.createWriteStream(path.join(movieDir,movi
ename + '.jpg'))
);
};
(async () =>
{
let files = await readFiles(
);
// await只能使用在原生语法
for (var file of files)
{
let name = path.parse(fil
E).name;
console.log(`正在获取【$
{name}】的海报`
);
savePoster(name,await getPoster(
Name));
}
console.log('=== 获取海报完成 ==='
);
})(
);
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对菜鸟教程的支持。
大佬总结
以上是大佬教程为你收集整理的es6学习笔记之Async函数的使用示例全部内容,希望文章能够帮你解决es6学习笔记之Async函数的使用示例所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。