Today just concept of Async/Await

Asynchronous function ทำงานพร้อมกันไม่ต้องรอให้งาน1เสร็จก่อนถึงจะเริ่มงาน2 function simulateAsyncAPI(text, timeout) { setTimeout(() => console.log(text), timeout) } simulateAsyncAPI('A', 1000) simulateAsyncAPI('B', 500) simulateAsyncAPI('C', 100) ---------------------------------------------------- result = C B A ----------------------------------------------------

callback

function simulateAsyncAPI(text, timeout, callback) { setTimeout(() => { console.log(text) if(callback) callback() }, timeout) } simulateAsyncAPI('A', 1000, () => { simulateAsyncAPI('B', 500, () => { simulateAsyncAPI('C', 100) }) }) ---------------------------------------------------- result = A B C ----------------------------------------------------

promise

function simulateAsyncAPI(text, timeout) { return new Promise((resolve, reject) => { setTimeout(() => { console.log(text) resolve() }, timeout) }) } simulateAsyncAPI('A', 1000) .then(() => simulateAsyncAPI('B', 500)) .then(() => simulateAsyncAPI('C', 100)) ---------------------------------------------------- result = A B C ----------------------------------------------------

async/await

function simulateAsyncAPI(text, timeout) { return new Promise((resolve, reject) => { setTimeout(() => { if(text === 'B') return reject('B got rejected') console.log(text) resolve() }, timeout) }) } async function run() { try { await simulateAsyncAPI('A', 1000) await simulateAsyncAPI('B', 500) await simulateAsyncAPI('C', 100) } catch (error) { console.error(error) } } run() ---------------------------------------------------- result = A B C ----------------------------------------------------