While loop นี้สิ้นสุดอย่างไร - รหัสโหนด

สวัสดี ขณะนี้ฉันใช้เว็บไซต์ '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 loop มันจะจบลงได้อย่างไร?


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