【问题标题】:How does this While loop end? - Node Code这个 While 循环如何结束? - 节点代码
【发布时间】:2017-08-31 19:11:57
【问题描述】:

您好,我目前使用的是“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 循环,它是如何结束的?

【问题讨论】:

  • request.read()null 分配给chunk 时,条件失败并停止,因为它现在是=== null

标签: javascript loops while-loop server


【解决方案1】:

request.read() 每次调用时都会返回一部分可用数据,直到没有更多数据要返回,在这种情况下它返回null

此时,chunk 也等于 null,由于赋值是返回赋值的表达式,因此条件为 false,因此 while 循环结束:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-01
    • 2019-03-15
    • 2013-05-14
    • 1970-01-01
    • 2020-09-13
    • 2021-02-18
    • 2017-04-18
    相关资源
    最近更新 更多