Enk*_*nki 53 async-await ecmascript-6 ecmascript-2017
是否可以让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');
Run Code Online (Sandbox Code Playgroud)
Fra*_*alf 36
你可以这样做
class Foo {
get bar() {
return (async () => {
return await someAsyncOperation();
})();
}
}
Run Code Online (Sandbox Code Playgroud)
这也是一样的
class Foo {
get bar() {
return new Promise((resolve, reject) => {
someAsyncOperation().then(result => {
resolve(result);
});
})
}
}
Run Code Online (Sandbox Code Playgroud)
您可以await
在调用方获得该值。
class Foo {
get bar() {
return someAsyncOperation();
}
}
async function test(){
let foo = new Foo, val = await foo.bar;
val.should.equal('baz');
}
Run Code Online (Sandbox Code Playgroud)