关于ES7中的async/await在客户端和服务端上的实践

一、前言

在项目中经常遇到处理异步请求的情况,面对层层的嵌套,回调显示那么苍白无力;

async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案,既然这样就用上吧。

二、配置编译

网上实践很多。。。

反倒是Promise在实践过程中加了一个polyfill。

 

三、实践

await后方法要写成peomise的形式,转成异步形式。大概如下,这样异步操作看起来就像同步操作一样明了。

 四、测试

(async function(){
      let step_1 = await step1(); //异步1

      console.log(step_1.result); //同步2
      console.log('step2');       //同步2

      let step_3 = await step3(); //异步3

      console.log(step_3); //同步4
      console.log('step4');       //同步4

    })().catch(err=>{
      console.log(err);
    });

    function step1(){
      return new Promise((resolve, reject) => {
        setTimeout(()=>{
          if(1){
            resolve({
              result:'我是异步step_1返回的数据'
            })
          }else{
            reject()
          }
        },2000);
      })
    }

    function step3(){
      return new Promise((resolve, reject) => {
        setTimeout(()=>{
          if(1){
            resolve('我是异步step_2返回的数据')
          }else{
            reject()
          }
        },2000);
      })
    }

 

 

五、node v7.5以上原生支持async/await

如果不想更新node,可以使用babel

$ npm install --save-dev babel-cli  

$ npm install --save-dev babel-preset-es2015 babel-preset-es2017  

 

创建: .babelrc文件 

{
 "presets": ["es2015","es2017"]
 }

 

//执行
babel-node xxx.js

  

 

 

 

 

  

 

转载于:https://www.cnblogs.com/leaf930814/p/8502541.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值