我的问题是以下代码示例只返回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"
]
}
答案 0 :(得分:1)
doStuff
是一个异步函数,它返回一个promise。您不等待承诺得到履行或拒绝,而是立即登录到控制台。您正在观察的行为是正确的。如果您只想在履行承诺时登录控制台,请then
调用从doStuff
返回的承诺。