Если вы разработчик JavaScript, то наверняка слышали об этом термине, и если не беспокойтесь, я здесь, чтобы объяснить, как он работает и когда его использовать.

Обещание

Мы все знаем, что JavaScript является синхронным и однопоточным. Но промисы позволяют JavaScript выполнять этот код асинхронно. Вместо того, чтобы возвращать прямой результат, он возвращает обещание.

Потом( )

Обычно мы получаем результат обещания, используя then(), передавая в нем функцию обратного вызова. Его можно либо решить, либо отклонить.

Возьмем пример

function run() {	
			return new Promise((resolve, reject) => {	
				setTimeout(() => {	
					resolve(99);	
					console.log('Done');	
				}, 2000);	
			});	
		}	

		console.log('start');	
		run().then((result) => {	
			console.log(result);	
			console.log('end');	
		});

		/*  Output:	
				start	
				Done (after 2 sec)	
				99	
				end	
		*/

Когда я вызвал функцию запуска, я передал функцию обратного вызова в then(), она принимает результат в качестве аргумента и позволяет вывести его на консоль. После регистрации результата я сделал свою следующую работу. Вот как мы получаем результат обещания, используя then().

Асинхронно и ждать

Сделаем то же самое с помощью async и await, здесь then() не нужно.

function run() {
			return new Promise((resolve, reject) => {
				setTimeout(() => {
					resolve(99);
					console.log('Done');
				}, 2000);
			});
		}

		async function main() {
			console.log('start');
			const result = await run();
			console.log(result);
			console.log('end');
		}

		main();

		/*  Output:	
				start	
				Done (after 2 sec)	
				99	
				end	
		*/

Ключевое слово await работает только в асинхронной функции, поэтому я делаю основную функцию асинхронной. Теперь мы должны поместить ключевое слово await перед вызовом функции запуска, который возвращает обещание. Из-за ключевого слова await поток будет ждать там, пока не получит разрешение или отклонение.