ecmascript-6 - (ES6) 类 (ES2017) 异步/等待 getter

标签 ecmascript-6 async-await ecmascript-2017

是否有可能有 ES6 类 getter 从 ES2017 等待/异步函数返回一个值。

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

最佳答案

更新:正如其他人指出的那样,这实际上不起作用。 @kuboon 在答案 below 中有一个很好的解决方法在这里..

你可以这样做

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

这又与

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

关于ecmascript-6 - (ES6) 类 (ES2017) 异步/等待 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33879401/

相关文章:

javascript - 导入模块并在同一 html 的另一个脚本范围中使用它

javascript - AsyncAwait 不等待获取响应

javascript - 我们可以在 JavaScript 中向不可变对象(immutable对象)添加属性吗?

javascript - ES7、ES8、ES9、ES10、ES11 浏览器支持

javascript - ES6 中花括号导入和从子目录导入有什么区别?

javascript - 将嵌套对象列表转换为数组的函数

javascript - ES6 中的非局部解构赋值

javascript - 可以等待然后混合在一个实现中吗?

c# - TCP服务器可以开始与客户端通信吗

javascript - 你如何创建一个命名的异步箭头函数?