Вы должны сделать так, чтобы родительский элемент function
также потреблял async
function
async
.
function Thing() {}
Thing.prototype.ShowResult = async function() { // add async
var result = await this.GetAsync(); // await the response
alert(result);
}
Thing.prototype.GetAsync = async function() {
var result = await this.AsyncFunc();
return result;
}
Thing.prototype.AsyncFunc = async function() {
return new Promise(resolve => {
setTimeout(() => {
resolve(6);
}, 2000);
});
}
Затем вы можете позвонить ShowResult
var thing = new Thing();
await thing.ShowResult();
Но, если вы звоните thing.ShowResult
за пределы async
function
вам придется использовать синтаксис Promise
, поскольку вы не можете await
то, чего нет в async
function
. В JS нет понятия «ожидание верхнего уровня». Еще.
var thing = new Thing();
thing.ShowResult().then( result => console.log(result) );