В книге Пауэрс "Изучаем Node.js" листинг 1.4:
var http = require('http');
var fs = require('fs');
var counter = 0;
/// запись чисел
function writeNums(res) {
//var counter = 0;
/// глобальное приращение значения, запись для клиента
for( i=0; i<100; i++) {
counter++;
res.write(counter.toString() + '\n');
}
}
http.createServer( function(req, res) {
var querry = require('url').parse(req.url).query;
var app = require('querystring').parse(querry).file + ".txt";
//console.log('app: ' + app);
/// заголовок контента
res.writeHead(200, {'content-type': 'text/plain'});
/// запись чисел
writeNums(res);
/// установка таймера на открытие файла и чтение его контента
setTimeout( function() {
console.log('opening ' + app);
/// открытие файла и чтение содержимого
fs.readFile(app, 'utf8', function(err, data) {
if (err)
res.write('Could not find or open file for reading.\n');
else
res.write(data);
res.end;
})
}, 2000)
}).listen(8888);
console.log('Listening on 8888.')
Вводим в браузер
http://localhost:8888/?file=main
Очень долго думает браузер, почти несколько минут. Потом выдает числа от 1 до 100 и содержимое файла main.txt (как ожидалось). Без SetTimeout и записи чисел всё работает мгновенно.
Полагаю проблема в коде и асинхронности Node. В книге об этом ничего.