Выразительный JavaScript (Хавербеке) - страница 194

Попробуйте сделать что-либо подобное, написав функцию >all.

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

>function all(promises) {

>  return new Promise(function(success, fail) {

>    // Ваш код.

>  });

>}


>// Проверочный код.

>all([]).then(function(array) {

>  console.log("Это должен быть []:", array);

>});

>function soon(val) {

>  return new Promise(function(success) {

>    setTimeout(function() { success(val); },

>               Math.random() * 500);

>  });

>}

>all([soon(1), soon(2), soon(3)]).then(function(array) {

>  console.log("Это должен быть [1, 2, 3]:", array);

>});

>function fail() {

>  return new Promise(function(success, fail) {

>    fail(new Error("бабах"));

>  });

>}

>all([soon(1), fail(), soon(3)]).then(function(array) {

>  console.log("Сюда мы попасть не должны ");

>}, function(error) {

>  if (error.message != "бабах")

>    console.log("Неожиданный облом:", error);

>});

18. Формы и поля форм

Я нынче ж на ученом кутеже
Твое доверье службой завоюю,
Ты ж мне черкни расписку долговую,
Чтоб мне не сомневаться в платеже.
Мефистофель, в «Фаусте» Гёте

Формы были кратко представлены в предыдущей главе в качестве способа передачи информации, введённой пользователем, через HTTP. Они были разработаны в вебе до появления JavaScript, с тем расчётом, что взаимодействие с сервером происходит при переходе на другую страницу.

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

Поля

Веб-форма состоит из любого числа полей ввода, окружённых тегом >

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

Много типов полей ввода используют тег >. Его атрибут >type используется для выбора стиля поля. Вот несколько распространённых типов:

>text текстовое поле на одну строку

>password то же, что текст, но прячет ввод

>checkbox переключатель вкл./выкл.

>radio часть поля с возможностью выбора из нескольких вариантов

>file позволяет пользователю выбрать файл на его компьютере