【问题标题】:Babel transpiles async but not await?Babel 转译异步但不等待?
【发布时间】:2016-04-03 00:13:13
【问题描述】:

Babel 使用 webpack 正确地转换了以下 sn-p 和配置中的所有内容(除了 await):

async function myMethod(i) {
    let j = i * i;
    return j;
}

let x = myMethod(2);

console.log(myMethod)
console.log(x);

let y = await myMethod(2);

结果是:

console.log(myMethod) // returns a function.
console.log(x) // returns a promise

现在奇怪的是,在最后一行我得到一个“意外令牌”错误表单 babel。怎么可能?

包.json:

"devDependencies": {
  "babel": "^6.5.2",
  "babel-loader": "^6.2.4",
  "babel-polyfill": "^6.7.4",
  "babel-preset-es2015": "^6.6.0",
  "babel-preset-react": "^6.5.0",
  "babel-preset-stage-0": "^6.5.0",
  "react": "^0.14.8"
}

Webpack.config:

var path = require('path');
var webpack = require('webpack');

module.exports = {
    context: path.join(__dirname),
    entry: ['babel-polyfill', './App/main.js'],

    [..]

    module: {
        loaders: [
          {
              test: /\.jsx?$/,
              exclude: /node_modules/,
              loader: 'babel',
              query: {
                  presets: ['es2015', 'stage-0', 'react'],
              },
          },
        ],
    },

    [..]

    resolve: {
        extensions: ['', '.js', '.jsx'],
    }
}

【问题讨论】:

    标签: javascript async-await webpack babeljs


    【解决方案1】:

    据我所知,要使用await,它必须包含在async 函数中。

    所以你可以改变:

    let y = await myMethod(2);
    

    成为:

    async function main() {
      let y = await myMethod(2);
    }
    
    main();
    

    它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-18
      • 2021-01-31
      • 2019-05-02
      • 2016-07-07
      • 2016-03-25
      • 2017-10-09
      相关资源
      最近更新 更多