Javascript 使用babel js编译asyn/wait到es5

Javascript 使用babel js编译asyn/wait到es5,javascript,babeljs,ecmascript-5,ecmascript-2017,Javascript,Babeljs,Ecmascript 5,Ecmascript 2017,我有一个非常小的项目,只有一个.html文件和一个.js文件。问题是我使用了asyn/await函数,所以我需要将其转换为es5,以确保一切正常 因此,我的.html文件如下所示: <html> <head> </head> <body> ...//page markup <script src="dist/myCodeAsES5.js"></script> <script>

我有一个非常小的项目,只有一个.html文件和一个.js文件。问题是我使用了asyn/await函数,所以我需要将其转换为es5,以确保一切正常

因此,我的.html文件如下所示:

<html>
 <head>
 </head>
 <body>
   ...//page markup

   <script src="dist/myCodeAsES5.js"></script>

   <script>
    var obj = new MyClass();
    obj.calculate();
   </script>

 </body>
</html>

…//页面标记
var obj=新的MyClass();
obj.calculate();
这里是我的src.js

class MyClass{

    constructor(){
        this.calculate = async function () {
           await func1();
        }
    }

    async function func1() {
      for (var i = 0; i < 3; i++) {
         await func2(); // await in loop until func2() completed 
      }
    }

    async function func2() {
       for (var i = 0; i < 10; i++) {
         await func3(); //wait until func3 and then continue looping
       }
    }

    function func3() {
      return new Promise(resolve => setTimeout(resolve, 1000));
    }


}
class-MyClass{
构造函数(){
this.calculate=异步函数(){
等待函数1();
}
}
异步函数func1(){
对于(变量i=0;i<3;i++){
wait func2();//在循环中等待,直到func2()完成
}
}
异步函数func2(){
对于(变量i=0;i<10;i++){
wait func3();//等待func3,然后继续循环
}
}
函数func3(){
返回新承诺(resolve=>setTimeout(resolve,1000));
}
}
现在主要的问题是-如何将其转换为es5,以便它在Internet Explorer中100%可用。我读了很多关于“巴别塔”的书,但我发现的一切都不可理解或过时。
那么,有人可以写一个简短的分步指南,介绍如何安装和编译这个小项目吗

假设您希望快速运行脚本以使用babel传输es5代码,请按照以下说明操作:

  • 您要做的第一件事是设置一个小节点项目。 如果从未设置过节点项目转到:

  • 一旦您在全球拥有npm,您就可以转到您的项目文件夹并键入:
    
    npm初始化
    
    这将创建一个package.json文件

  • 后藤: 然后单击
    CLI
    ,然后按照上面提到的所有步骤操作

  • 确保为babel安装了正确的预设以传输异步等待。您需要es2015和stage3预设以及运行时插件

    • http://babeljs.io/docs/plugins/preset-es2015/#install
    • http://babeljs.io/docs/plugins/preset-stage-3/#install
    • https://babeljs.io/docs/plugins/transform-runtime/#installation
    • 签出一个更简单的设置

您是否阅读了babel网站上的任何文档?预设的
es2017
是否比
stage-3
更有意义?好的,至少它澄清了我的情况。但在编译“uncaughtreferenceerror:require未定义”之后,我无法摆脱错误@zeroflagL es2017不包含异步生成器函数。这是因为它们不是ES 2017的一部分。问题不在于它们。有趣的是,我通过将代码重写为TypeScript)解决了这个问题