(ES6) クラス (ES2017) async / await getter 質問する

(ES6) クラス (ES2017) async / await getter 質問する

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);
            });
        })
    }
}

おすすめ記事