Показать сообщение отдельно
  #1 (permalink)  
Старый 03.06.2018, 12:04
Аспирант
Отправить личное сообщение для VyacheslavBozere Посмотреть профиль Найти все сообщения от VyacheslavBozere
 
Регистрация: 18.03.2018
Сообщений: 31

11 глава в EloquentJavaScript
Всех приветсвую! Помогите пож-та разобраться с примером в учебнике EloquentJavaScript(Выразительный JavaScript) http://eloquentjavascript.net/11_async.html.
Застрял на 11 главе, заголовки Networks are hard; Collection of Promises.
Функция requestType(name, handler) устанавливает тип файла в сети компьютеров Воронов. Name это тип файла, handler обработчик который обернут в Promise, последний возвращается в виде значения или ошибки callback функции, которая является аргументом функции DefineRequestType. Я не могу понять как это используется на практике. В следующей главе автор предлагает определить тип файла requestType("ping", () => "pong") а обработчик будет "pong".
Получается что "pong" будет handler и в чем смысл ?

function requestType(name, handler) {
  defineRequestType(name, (nest, content, source,
                           callback) => {
    try {
      Promise.resolve(handler(nest, content, source))
        .then(response => callback(null, response),
              failure => callback(failure));
    } catch (exception) {
      callback(exception);
    }
  });
}


requestType("ping", () => "pong");

function availableNeighbors(nest) {
  let requests = nest.neighbors.map(neighbor => {
    return request(nest, neighbor, "ping")
      .then(() => true, () => false);
  });
  return Promise.all(requests).then(result => {
    return nest.neighbors.filter((_, i) => result[i]);
  });
}
Ответить с цитированием