Красноречивый парадокс Javascript Chapter 11 (3rd Edition)? - PullRequest
0 голосов
/ 01 июля 2018

В настоящее время я работаю над третьим выпуском 'Eloquent Javascript', который в настоящее время находится в последней главе, но я все еще не совсем понял код requestType главы 11 "соединения". (Вы можете увидеть всю главу по адресу: https://eloquentjavascript.net/11_async.html#c_68Z9trrpeS)

При использовании метода «везде» каждое гнездо будет иметь свое собственное свойство «соединения», но в начале оно есть только у 1 гнезда, затем оно транслирует соединения всем ближайшим соседям, но когда соседи получили его, они не У нас пока нет настройки свойства «connections» (потому что в данный момент она есть только в исходном гнезде), как метод requestType () назначает новые «connections» из null?

Вот код:

requestType("connections", (nest, {name, neighbors},
                            source) => {
  let connections = nest.state.connections;
  if (JSON.stringify(connections.get(name)) ==
      JSON.stringify(neighbors)) return;
  connections.set(name, neighbors);
  broadcastConnections(nest, name, source);
});

function broadcastConnections(nest, name, exceptFor = null) {
  for (let neighbor of nest.neighbors) {
    if (neighbor == exceptFor) continue;
    request(nest, neighbor, "connections", {
      name,
      neighbors: nest.state.connections.get(name)
    });
  }
}

everywhere(nest => {
  nest.state.connections = new Map;
  nest.state.connections.set(nest.name, nest.neighbors);
  broadcastConnections(nest, nest.name);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...