搜尋

首頁  >  問答  >  主體

標題重寫為:"(ES6)類別 (ES2017)非同步/等待的getter方法"

<p>是否可能或將來可能透過ES2017的await / async函數從ES6類別的getter傳回一個值。 </p> <pre class="brush:php;toolbar:false;">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');</pre> <p><br /></p>
P粉564192131P粉564192131551 天前668

全部回覆(1)我來回復

  • P粉025632437

    P粉0256324372023-08-23 11:52:11

    更新:正如其他人指出的那樣,這並不真正起作用。 @kuboon在下面提供了一個不錯的解決方法。

    你可以這樣做

    class Foo {
        get bar() {
            return (async () => {
                return await someAsyncOperation();
            })();
        }
    }

    這與下面的程式碼是相同的

    class Foo {
        get bar() {
            return new Promise((resolve, reject) => {
                someAsyncOperation().then(result => {
                    resolve(result);
                });
            })
        }
    }

    回覆
    0
  • 取消回覆