Я написал калькулятороподобное приложение на JavaScript, главным образом, чтобы оно работало в любом браузере. Имеет несколько полей ввода. Когда я нажимаю кнопку «Рассчитать», она собирает данные из этих полей, вызывает различные функции и отображает результат. Не нужно выполнять асинхронную работу, не нужно извлекать данные из Интернета или с диска, которые могут задержать или дать сбой, пользователь запускает событие и затем должен ждать, пока ответ не будет получен.
Фрагмент, приведенный ниже, более или менее является Hello World для такого рода процессов.
<script type="text/javascript">
function transformer(instring)
{
var outstring = instring + instring;
return outstring;
}
function calculate()
{
var srcStr = document.mainform.src.value;
var transformed = transformer(srcStr);
document.mainform.dst.value = transformed;
}
</script>
<form name="mainform">
Input data <input type="text" name="src" value="abc"/><br>
<button type="button" onclick="javascript:calculate();">Calculate</button><br>
Output data <input type="text" name="dst" />
</form>
Я хотел бы заменить функцию transformer () на функцию из библиотеки, которая возвращает обещание. Какое минимальное изменение в коде мне нужно сделать, чтобы добиться этого. Я много искал обещания, асинхронные функции, затем и т. Д., Но не нашел простого «вот как использовать обещание в простой программе, управляемой событиями», и мне пока не удалось написать рабочий эквивалент программы выше. Как только у меня будет рабочий мир, я смогу строить оттуда.
Предположим, что обещание всегда разрешится, отклонение никогда не нужно обрабатывать. Под «минимальным изменением» я не обязательно подразумеваю наименьшее количество символов, но самое простое для понимания или с наименьшим количеством новых концепций.