ES6 クラス ゲッターで 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');
ベストアンサー1
アップデート:他の人が指摘しているように、これは実際には機能しません。@kuboonは回答で優れた回避策を示しています。下にここ..
あなたはこれを行うことができます
class Foo {
get bar() {
return (async () => {
return await someAsyncOperation();
})();
}
}
これはまた同じである
class Foo {
get bar() {
return new Promise((resolve, reject) => {
someAsyncOperation().then(result => {
resolve(result);
});
})
}
}