关于ES6的Babel,Promise,async和await---简单理解

:Babel :

用来把 ES6 的代码转化为浏览器或者其它环境支持的代码。兼容

{

构建bable的工程:

(1)构建 npm包 npm init -y , 并新建 src 目录 和 一个 index.js 文件。

(2)安装依赖包npm install --save-dev babel-loader @babel/core 

babel-loader:只是和webpack之间的桥梁,并不会把es6语法进行转换

同时在webpack.config文件中进行配置loader

     

(3)真正进行编译:

1、安装 npm install @babel/preset-env --save-dev (但是安装完之后执行打包指令是不生效的,需要将@babel/preset-env使能激活。)

2、激活@babel/preset-env的两种方式

在根目录下建立.babelrc文件

在webpack.config.js中moudule规则rules里面配置options

3:箭头函数进行编译了,但es6语法没有进行转换

安装:babel-polyfill: npm install --save @babel/polyfill

使用:在js文件中引入 import "@babel/polyfill"

在webpack中配置如下,可以使用useBuiltIns按需进行补充所使用到的转换,可以减小打包出来文件的大小。

在.babelrc中进行配置,注意格式是json格式,双引号,使用了useBuiltIns的配置后在js文件中引入

}

(4)输入npm run babel 就可以看到src的文件被编译到了dist里面;

:Promise的理解

promise是跟随es6 出来的对异步回调地狱的一种解决很好的解决方案。

(1)首先补充回调地狱:请求:代表一个网络调用,请求结果:网络请求会进行响应

造成,代码臃肿,可读性差,耦合度高,维护性差,只能在回调里处理异常。

(2)Promise由此诞生:

有三种状态:pending  ,fulfilled,rejected

流程:创建Promise对象, .then注册回调函数,实现异步

同时有这三个函数

resolve(成功执行的函数) 

 reject   (失败走的函数)

cash函数:then方法捕捉到Promise状态rejected   执行cash函数

异步任务:前面不影响后面

真正用法:promise的链式编程可以保证代码的执行顺序,但是他的前提是每一次then处理完数据后,一定要return一个promise对象,下一次then才能接受到数据。

详细看代码:(大致是这个意思)

但是这样又代码冗余了,全部都是.then .then 不利于代码维护

于是async和await就可以代替promise了

:async和await

async:作为一个关键字放在声明函数前面,表示函数为一个异步任务,不会阻塞后面的函数

await:只能在async声明的函数中使用,后面跟着promise实例对象,可以直接拿到promise中resolve数据。

看下面的代码:

封装一个执行上述异步的async函数   await直接拿到fn返回Promise数据 并且复制给res

当anync执行到await时,代码不会继续执行,拿到promise中的resolve数据才继续往下执行,保证了代码的顺序。

anync与await使异步代码看着像同步代码。

 

 

 

转载:https://blog.csdn.net/m0_61464384/article/details/123953475
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: @babel/plugin-transform-async-to-generator是一个Babel插件,它将async/await语法转换为ES5代码,以便在不支持该语法的环境中运行。要配置该插件,请按照以下步骤操作: 1. 安装@babel/plugin-transform-async-to-generator插件: ``` npm install --save-dev @babel/plugin-transform-async-to-generator ``` 2. 在babel配置文件中添加该插件: ```javascript { "plugins": ["@babel/plugin-transform-async-to-generator"] } ``` 3. 如果您使用的是babel 7及以上版本,可以将插件配置为使用"options"选项: ```javascript { "plugins": [ ["@babel/plugin-transform-async-to-generator", { "module": "bluebird", "method": "coroutine" }] ] } ``` 这里的例子展示了如何使用bluebird库中的coroutine方法来提供async/await功能。您可以使用其他库或方法来实现相同的效果。 注意:如果您使用的是babel 6.x版本,则需要在插件名称前添加"babel-"前缀,例如"babel-plugin-transform-async-to-generator"。 ### 回答2: @babel/plugin-transform-async-to-generator是一个Babel插件,用于将ES7中的`async/await`转换为ES6中的生成器函数。要配置该插件,您需要按照以下步骤进行操作: 1. 首先,安装插件,通过运行以下命令:`npm install --save-dev @babel/plugin-transform-async-to-generator`。 2. 在项目的根目录下创建一个名为`.babelrc`的文件(如果它不存在)。这是Babel的配置文件。 3. 在`.babelrc`文件中,添加以下内容: ```json { "plugins": ["@babel/plugin-transform-async-to-generator"] } ``` 这指示Babel加载并使用@babel/plugin-transform-async-to-generator插件。 4. 如果您使用的是Babel 7以上的版本,可以在`.babelrc`中指定插件的参数。例如,要指定`regenerator`作为插件的参数(用于支持较旧的浏览器),您的`.babelrc`文件应如下所示: ```json { "plugins": [ ["@babel/plugin-transform-async-to-generator", { "regenerator": true }] ] } ``` 这样配置后,Babel将在转换代码时使用@babel/plugin-transform-async-to-generator插件,并根据需要设置生成器函数的参数。 请注意,配置文件`.babelrc`的路径可以根据您的项目结构和工具链的不同而有所不同。记得根据您的实际情况,根据需要设置正确的路径。 希望这能帮到您!如果您有其他问题,请随时提问。 ### 回答3: @babel/plugin-transform-async-to-generator是一个可以将async/await语法转换成generator函数的Babel插件。要配置该插件,你需要按照以下步骤进行操作: 第一步,安装插件: ``` npm install --save-dev @babel/plugin-transform-async-to-generator ``` 第二步,在你的babel配置文件(如.babelrc)中添加插件的相关配置: ```json { "plugins": ["@babel/plugin-transform-async-to-generator"] } ``` 或者,如果你使用的是babel.config.js,可以按照以下方式进行配置: ```javascript module.exports = { plugins: ['@babel/plugin-transform-async-to-generator'] } ``` 完成以上配置后,插件会自动转换你的async/await语法成generator函数,使之能够在不支持async/await的环境中运行。 注意,插件的配置选项是可选的,你可以根据需要进行进一步配置。你可以在插件配置中指定一个"module"选项,该选项用于控制生成的模块类型,可选的值为"commonjs"和"amd"。默认值为"commonjs"。 希望以上回答能够帮助到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值