Как заканчивается этот цикл While? - Код узла

Здравствуйте, в настоящее время я использую веб-сайт Codeschool.com и думаю, что в коде инструкторов есть бесконечный цикл в их коде Node / Javascript, но я не уверен.

Вот код:

http.createServer(function(request, response) {
  response.writeHead(200);
  request.on('readable', function () {
    var chunk = null;
    while( null !==(chunk = request.read())) {
      response.write(chunk);
    }
  });
  request.on('end', function() {
    response.end();
  });
}).listen(8080)

Инструктор говорит, что этот код аналогичен использованию request.pipe (response);

Я понимаю концепцию, но что заставляет меня зацикливаться (без каламбура), это цикл while, как он вообще закончится?


person Bail3y    schedule 06.04.2017    source источник
comment
Когда request.read() присваивает null chunk, условие не выполняется и останавливается, потому что теперь это === null.   -  person    schedule 06.04.2017


Ответы (1)


request.read() возвращает часть доступных данных при каждом вызове, пока не закончатся возвращаемые данные, и в этом случае возвращается null.

В этот момент chunk также равно null, и поскольку присваивания являются выражениями, которые возвращают назначенное значение, условие ложно, и поэтому цикл while заканчивается:

while ( null !== (chunk = null) ) { ... }

person jotaelesalinas    schedule 06.04.2017