Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to call an async function

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 
like image 428
chris Avatar asked Apr 23 '18 13:04

chris


Video Answer


2 Answers

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>
like image 102
Taki Avatar answered Oct 03 '22 21:10

Taki


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');  }); 
like image 22
h1b9b Avatar answered Oct 03 '22 20:10

h1b9b