2016-07-19 37 views
2

我只是想探索异步/等待。当我调用函数我在控制台得到这个:正确的方式来使用异步/等待与babel 6和webpack

Promise { <state>: "pending" } 

这里是我的webpack.conf.js:

var path = require("path"); 
var webpack = require('webpack'); 
var BundleTracker = require('webpack-bundle-tracker'); 

module.exports = { 
    devtool: 'eval', 
    entry: [ 
     'babel-regenerator-runtime', 
     './static/apps/app.jsx' 
    ], 
    output : { 
     path: __dirname, 
     filename: "./static/js/bundles/[name]-[hash].js" 
    }, 
    module: { 
     loaders: [ 
      { 
       test: /\.jsx?$/, 
       loader: 'babel-loader', 
       exclude: /node_modules/, 
       query: { 
        plugins: [ 'transform-decorators-legacy', 'syntax-async-functions', 'transform-async-to-generator'], 
        presets: ['react', 'es2015', 'stage-0'] 
       } 
      } 
     ] 
    }, 
    plugins: process.env.NODE_ENV === 'production' ? [ 
     new webpack.optimize.DedupePlugin(), 
     new webpack.optimize.OccurrenceOrderPlugin(), 
     new webpack.NoErrorsPlugin(), 
     new webpack.optimize.UglifyJsPlugin({ 
     compress: { warnings: false }, 
      comments: false, 
      sourceMap: true, 
      mangle: true, 
      minimize: true 
    }) 
    ] : [new BundleTracker({filename: './webpack-stats.json'}), new webpack.NoErrorsPlugin()] 
}; 

和我的功能:

export async function x() { 
    return await (5 * 5); 
} 

和调用的方法:

import {x} from '../utils/pgp.js'; 

..... 
componentWillMount(){ 
     console.log(x()); 
    } 
..... 

回答

8

的结果将是一个承诺,就像你的控制台日志告诉你的一样。要访问解析的值,您需要将您的呼叫链接到then,或者您需要在另一个可以使用await解析的异步函数中。

async function x() { 
    return await 5 * 5 
} 

// using `.then` 
x().then(value => console.log(value)) 

// inside another async function 
async function main() { 
    let value = await x() 
    console.log(value) 
} 

main()