美文网首页
async/await 实现原理

async/await 实现原理

作者: 菜鸟切图仔 | 来源:发表于2019-04-25 15:14 被阅读0次
    <!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 实现原理

          本文链接:https://www.haomeiwen.com/subject/qvlzgqtx.html