Что такое промисы в JavaScript? Как они используются, чтобы сделать код асинхронным?
Обещания: еще один способ сделать код асинхронным в javascript — использовать обещания.
Промисы — это один из способов работы с асинхронным кодом.
Обещания были частью языка на протяжении многих лет.
Промисы — это способ выполнить результат асинхронной функции как можно скорее, а не помещать его в конец стека вызовов.
стек вызовов: всякий раз, когда мы встречаемся с функцией, которую нам нужно выполнить, мы помещаем в нее стек вызовов. стек вызовов в java-скрипте выполняет функции синхронно, т. е. выполняет первую функцию, затем вторую, третью и так далее.
Обещания — это класс, поэтому нам нужно создать экземпляр класса, а затем инициализировать его с помощью функции, а затем указать функцию в качестве первого параметра.
КАК СОЗДАТЬ ОБЕЩАНИЕ?
-› первое создание нового экземпляра
-› второе обещание имеет функцию в своем аргументе, обещание имеет два состояния разрешения и отклонения. ИСПОЛЬЗУЯ разрешение и отклонение, мы можем сообщить вызывающей стороне, каким было итоговое состояние обещания.
› теперь я передам функцию setTimeout в тело функции.
КОД:
let promise= new Promise(function(resolve,reject) {
setTimeout(()=›разрешить('выполнить'),1000)
});
//здесь я буду использовать метод
promise.then(
result=› {
console.log(result);
},error=›console.log(error) //здесь я укажу другой аргумент
)
Использование разрешения u может вернуть успешный результат.
Когда установленная функция тайм-аута завершает свою обработку, разрешение вернет результат этому методу .then.
В этом методе .then у нас есть два аргумента: один является результатом, а другой — ошибкой.
Если наше решение успешно вернуло результат, результат будет напечатан с использованием этой функции результата.
В противном случае для отклонения будет напечатано сообщение об ошибке.
Если я верну отклонить сообщение об ошибке, будет напечатано.
Вывод: выполнить
Через одну секунду мы выполним вывод.
КАК ПРОМИСЫ ИСПОЛЬЗУЮТСЯ ДЛЯ АСИНХРОНИЗАЦИИ КОДА?
Давайте добавим еще одну забавную функцию в наш предыдущий код:
let promise= new Promise(function(resolve,reject) {
setTimeout(()=›разрешить('выполнить'),1000)
});
promise.then(
result=› {
console.log(result);
},error=›console.log(ошибка)
)
function fun() {
console.log(“fun”);
}
весело();
Итак, здесь вывод будет
веселье
выполнять
Теперь, если мы хотим напечатать сначала выполнить, а затем раньше, мы можем использовать это.
let promise= new Promise(function(resolve,reject) {
setTimeout(()=›разрешить('выполнить'),1000)
});
promise.then(
result=› {
console.log(result);
весело();
},error=›console.log(ошибка)
)
function fun() {
console.log(“fun”);
}
Мы можем вызвать забавную функцию в методе обещания
Теперь вывод:
выполнить
весело
Вот как мы можем создать асинхронный код в javascript.