I want the console to print '1' first, but I am not sure how to call async functions and wait for its execution before going to the next line of code.
const request = require('request'); async function getHtml() { await request('https://google.com/', function (error, response, body) { console.log('1'); }); } getHtml(); console.log('2');
Of course, the output I'm getting is
2 1
according to async_function MDN
Return value
A Promise which will be resolved with the value returned by the async function, or rejected with an uncaught exception thrown from within the async function.
async function will always return a promise and you have to use .then()
or await
to access its value
async function getHtml() { const request = await $.get('https://jsonplaceholder.typicode.com/posts/1') return request } getHtml() .then((data) => { console.log('1')}) .then(() => { console.log('2')}); // OR (async() => { console.log('1') await getHtml() console.log('2') })()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
You should await
the async function, if want to wait for it to resolve before continuing or use .then()
await getHtml(); console.log('2');
or
getHtml() .then(() => { console.log('2'); });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With