繁体   English   中英

Babel异步转换但没有等待吗?

[英]Babel transpiles async but not await?

Babel使用Webpack在以下代码片段和配置中正确地传递了所有内容:

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的“意外令牌”错误消息。 怎么可能?

Package.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'],
    }
}

据我所知,要使用await必须将其包装在async函数中。

因此,您可以更改:

let y = await myMethod(2);

成为:

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

main();

它应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM