Домашнее задание:
Напишем небольшой компонент симулирующий долгое вычисление
HTML
input принимающий некоторую строку от пользователя
button кнопка "рассчитать", будет disable, если input пуст
Поле div для вывода количества посчитанных символов в строке
JS
создать асинхронную функцию, которая будет вызываться по кнопке "рассчитать", выставлять состояние кнопки (disable), затем будет симулировать долгий расчет(через setTimeout - 3s), во время расчета disable должны быть и input и кнопка.
вывести результат промиса (количество символов в строке) в поле div, не используя .then()
*дополнительная задача
Отключить disable button, позволив пользователю вводить пустую строку и обработать ошибку через try..catch, создав свой собственный экземляр ошибки и выводить её в консоль.
*дополнительная мини-задача (отдельная)
Вызовите async–функцию из "обычной"
async function wait() {
await new Promise(resolve => setTimeout(resolve, 1000));
return 10;
}
function f() {
...что здесь написать?
чтобы вызвать wait() и дождаться результата "10" от async–функции
не забывайте, здесь нельзя использовать "await"
}
Code: https://github.com/tel-ran-de/FE-24-m/tree/fe-05-18-js-async
Повторение материала: https://learn.javascript.ru/settimeout-setinterval https://developer.mozilla.org/ru/docs/Web/API/setTimeout https://learn.javascript.ru/async-await https://learn.javascript.ru/promise-basics
Дополнительное чтение: https://learn.javascript.ru/event-loop https://habr.com/ru/post/461401/ https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
Домашнее задание: Напишем небольшой компонент симулирующий долгое вычисление
HTML
JS
*дополнительная задача
*дополнительная мини-задача (отдельная) Вызовите async–функцию из "обычной" async function wait() { await new Promise(resolve => setTimeout(resolve, 1000)); return 10; }
function f() { ...что здесь написать? чтобы вызвать wait() и дождаться результата "10" от async–функции не забывайте, здесь нельзя использовать "await" }