【发布时间】:2017-02-10 06:29:43
【问题描述】:
const ret = () => new Promise(resolve => setTimeout( () => resolve('somestring'), 1000));
async function wrapper() {
let someString = await ret();
return someString;
}
console.log( wrapper() );
它记录Promise { <pending> };
为什么它返回一个 Promise 而不是 'somestring'?
我正在使用 Babel ES7 预设来编译它。
【问题讨论】:
-
因为它是异步函数。这就是异步函数和普通函数的区别。
-
我认为您可以从异步函数内部获得异步/等待的好处。如果您在
wrapper()函数内或任何其他async函数内console.log(someString),您将获得somestring值。 -
@estus 那么为什么在等待
someString输出正确的值后立即记录呢? -
@Gobliins:不,它是 ES2017 (ES8) 的一部分。
-
@FelixKling 你是对的,我错误地认为 ES2017 == ES7
标签: javascript async-await ecmascript-2017