2014-11-19 2 views
-1

데이터를 저장하는 기능을 사용하고 있습니다. http.request 옵션 사용 잘 작동합니다. 루프에서 동일한 함수를 호출하면 일부 데이터가 데이터베이스에 저장되지 않습니다. 또한 일부 응답에 대해 구문 분석 오류 메시지가 나타납니다.Node.js 루프의 http.request

어떻게 루프 내에서 http.request의 기능을 호출 할 수 있습니까?

for (var i = 1; i <= 23; i++) { 
    turn_timer(i); 
} 

function turn_timer(nos) { 
    try { 
     var str = "num=" + nos; 
     var len = str.length; 

     win_settings.headers = { 
      'Content-length': len, 
      'Content-Type': 'application/x-www-form-urlencoded' 
     } 

     var request = http.request(win_settings, function(response) { 
      response.on('data', function(data) { 

      }); 

      response.on('error', function(err) { 

      }); 

      response.on('end', function() { 

      }); 
     }); 

     request.on('error', function(err) { 

     }); 

     request.write(str + "\0"); 
     request.end(); 

    } catch (err) { 
     console.log(err); 
    } 
} 
+0

당신은 당신의 코드를 공유 할 수 있습니다

var http = require('http'), async = require('async'); function turn_timer(n, callback) { var var str = "num=" + n, len = str.length, req; win_settings.headers = { 'Content-length': len, 'Content-Type': 'application/x-www-form-urlencoded' }; req = http.request(options, function(response) { ... callback(null); }); req.on('error', function(err) { ... callback(err); }); req.end(); } async.timesSeries(23, function (n, next) { turn_timer(options, function(err) { next(err); }); }); 

자세한 내용은 여기 async.timesSeries에 대한 자세한 내용을보실 수 있습니다? –

+0

이 글을 읽으셨습니까? http://stackoverflow.com/questions/21320159/node-js-sending-http-request-in-a-loop? –

+0

이 코드를 추가했습니다. 처음 5 개를 올바르게 입력 한 후 다음 5 개 오류를 수락합니다. 다음 몇 번의 확인 및 다시 오류. 응답을 기다리는 동안 소켓이 걸려 있기 때문입니까? 그것을 고치는 방법? – swaraj

답변

0

비동기 함수 호출이 메시지를 덮어 쓸 수 있으므로 메시지를 저장하는 변수의 범위를 확인하십시오.

0

저는 비동기 방식으로 진행하는 대신 for 루프를 사용하고 있기 때문에 문제가 있다고 생각합니다. 다음은 문제를 신속하게 해결하는 방법입니다. 불완전한 것으로 보이는 코드 일부를 생략했습니다. 나는 중요한 부분을 떠나서 similar question에 대한 답을 토대로 몇 가지를 추가했습니다. https://github.com/caolan/async#timesseriesn-callback

+0

다른 값을 가진 동일한 함수를 어떻게 실행합니까? 루프가 예상대로 – swaraj

+0

첫 번째 인수로 번호를 받게됩니다. 이를 사용하여 필요한 모든 값을 계산할 수 있습니다. –

관련 문제