Показать сообщение отдельно
  #2 (permalink)  
Старый 27.03.2015, 15:21
Аватар для MrVik
Новичок на форуме
Отправить личное сообщение для MrVik Посмотреть профиль Найти все сообщения от MrVik
 
Регистрация: 25.03.2015
Сообщений: 4

На буржуйском форуме подсказали как решить первую проблему, вот код:
var http = require("http");

var req_total = 10,
    req_per_sec = 30,
    i = 0;

var intervalID = setInterval(function timerik()  {

    // Create a new local variable bound to this closure's invocation's scope.
    var j = ++i;

    if(j == req_total){
        clearInterval(intervalID); //end of Life
    }

    console.log(j); //write to console  task number
    console.time(j +' latency');


    http.get("http://www.yandex.ru", function (response){
        console.log(j +" result = " + response.statusCode); //write to console task number and statusCode
        console.timeEnd(j +' latency'); //write to console operation timeout
    });

}, 1000/req_per_sec);

В общем все просто, сделали переменную J в которую будет сохранятся идентификатор i, при этом переменная будет не такая глобальная как первая. Теперь результаты запросов будут нормально отображаться. По второй проблеме все глухо, получаю ответ не по всем запросам, а лишь по некоторым из них, остальная часть продолжает теряться.:
"C:\Program Files\nodejs\node.exe" run4.js
1
2
3
1 result = 200
1 latency: 111ms
4
2 result = 200
2 latency: 95ms
5
3 result = 200
3 latency: 99ms
6
4 result = 200
4 latency: 109ms
7
5 result = 200
5 latency: 105ms
8
9
10

Process finished with exit code 0

Как мы видим результат есть только с 1ого по 5ый, оставшиеся запросы продолжают теряться из-за того что приложение перестает обрабатываться.
Ответить с цитированием