【发布时间】:2016-02-26 01:15:53
【问题描述】:
是否有或将有可能有一个 ES6 类 getter 从 ES2017 的 await / async 函数返回一个值。
class Foo {
async get bar() {
var result = await someAsyncOperation();
return result;
}
}
function someAsyncOperation() {
return new Promise(function(resolve) {
setTimeout(function() {
resolve('baz');
}, 1000);
});
}
var foo = new Foo();
foo.bar.should.equal('baz');
【问题讨论】:
-
这就是你所需要的:
get bar(){ return someAsyncOperation(); } -
@FelixKling 我更新了我的帖子,希望能澄清我的问题。我不是想从 getter 返回一个函数。我希望返回值来自异步操作。
-
我明白 return someAsyncOperation();会返回一个承诺。我想返回承诺的结果。 foo.bar 应该返回 'baz'
-
不能。您不能从异步函数同步返回。
async/await只是围绕承诺 + 生成器的语法糖。它可以让您编写看起来同步的代码,但它仍然异步运行。在最高级别,您仍然必须处理承诺。await foo.bar或许可以,但如果不行,则必须直接处理foo.bar返回的promise。 -
如果你能这样做就好了:
get async functionName(){}。我希望能够(直接)在吸气剂内部等待,而不是在这里回答的迂回方式。
标签: ecmascript-6 async-await ecmascript-2017