Babel异步/等待只返回承诺

时间:2016-01-24 13:43:44

标签: javascript async-await ecmascript-6 babeljs

我的问题是以下代码示例只返回Promise对象,async / await根本不起作用。

import 'babel-polyfill';

function doAsync() {
    return new Promise(function(resolve, reject){
        setTimeout(function(){
            resolve('result')
        }, 2000)
    })
}

async function doStuff() {
    try {
        return await doAsync()
    } catch (err) {
        console.err(err);
    }
};

doStuff() // Returns the promise object
console.log('log') // Runs before timeout

Babel config

{
    presets: ["es2015"],
    plugins: [
      "transform-class-properties",
      "syntax-decorators",
      "transform-decorators-legacy",
      "syntax-async-functions",
      "transform-regenerator"
    ]
}

1 个答案:

答案 0 :(得分:1)

doStuff是一个异步函数,它返回一个promise。您不等待承诺得到履行或拒绝,而是立即登录到控制台。您正在观察的行为是正确的。如果您只想在履行承诺时登录控制台,请then调用从doStuff返回的承诺。