You need to use Promises for this. They are available in ES6 but can be polyfilled quite easily:
function x() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('done!');
});
});
}
x().then((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!';
}