2015-04-01 2 views
0

Я нашел этот кусок кода, узнавая о Node.js потоков:Оператор присваивания в состоянии

var fs = require('fs'); 
var readableStream = fs.createReadStream('file.txt'); 
var data = ''; 
var chunk; 

readableStream.on('readable', function() { 
    while ((chunk=readableStream.read()) != null) { 
     data += chunk; 
    } 
}); 

readableStream.on('end', function() { 
    console.log(data) 
}); 

Внутри условия в то время как там это ((chunk=readableStream.read()) != null). Я понимаю, что каждый оператор в JavaScript возвращает значение, и из-за этого этот фрагмент кода работает. Я не могу понять, как реплицировать этот код, не используя назначение внутри условия.

ответ

0

Эквивалентное цикл может быть сделано путем проверки значения после назначения:

while (true) { 
    chunk = readableStream.read(); 
    if (chunk == null) { 
     break; 
    } 
    data += chunk; 
} 

или вы можете повторить задание перед циклом и внутри цикла:

chunk = readableStream.read(); 
while (chunk != null) { 
    data += chunk; 
    chunk = readableStream.read(); 
} 
Смежные вопросы