You need to use Promises for this. They are available in ES6 but can be polyfilled quite easily:
function x() {
var promise =return new Promise(function(resolve, reject) => {
window.setTimeout(function() => {
resolve('done!');
});
});
return promise;
}
x().then(function(done) => {
console.log(done); // --> 'done!'
});
With async
/await
in ES2017 it becomes nicer if inside an async
function:
async function() {
const result = await x();
console.log(result); // --> 'done!';
}