Всех приветсвую! Помогите пож-та разобраться с примером в учебнике 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]);
});
}