<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>async/await 实现原理</title>
</head>
<body>
<!-- async/await 的原理就是把Generator函数和自动执行器封装在同一个函数里,具体实现co.js-->
<!-- co.js 函数接受一个generator函数作为参数,最终返回一个promise对象 -->
<script>
// 简易co函数
// gen : generator 函数
function myCo(gen) {
return new Promise((resolve, reject) => {
const next = data => {
try {
const { value, done } = gen.next(data);
} catch (error) {
return reject(error);
}
if (!done) {
Promise.resolve(value).then(val => {
next(val);
}, reject);
} else {
resolve(value);
}
};
next(); //执行一次next
});
}
</script>
</body>
</html>
async/await 实现原理
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- generator函数 Generator 函数整体就是一个状态机,内部有多少个yield,就有多少个状态,当Ge...
- 基本用法 async 表示这是一个async函数,await只能用在这个函数里面。 await 表示在这里等待pr...