1

私は node.js の初心者ですが、これが機能していないようです。

 function sleep(milliSeconds){
    var startTime = new Date().getTime();
    while (new Date().getTime() < startTime + milliSeconds); 
}

var isRequestComplete = false;
while(isRequestComplete == false){
console.log("in make request");
var querystring = require('querystring');


var data = querystring.stringify({
      username: 'username',
      password: 'password',
      action: 'convert',
      voice: 'engfemale1',
      text: 'stuff and things, this should take longer than one request.'
    });

var options = {
  host: 'ws.ispeech.org',
  port: 80,
  path: '/api/rest/1.5',
  method: 'POST',
  headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': data.length
    }
};

var http = require('http');
var req = http.request(options, function(res) {
    console.log("got response");
    res.setEncoding('utf8');
    res.on('data', function (chunk) {
        console.log("body: " + chunk);
        if(chunk.indexOf("finished") != -1){
            isRequestComplete = true;
        }
    });
});


req.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});
req.write(data);
req.end();
console.log("completed");
sleep(5000);
}

なんらかの理由で、http 要求は応答を送り返しません。コードが完全に完成しない限り、while ループでは応答が返ってきません。したがって、ループは決して終了しません。私のプログラムのユーザー名とパスワードが入力されていますが、ここでは機密保持のためではありません。読んでくれてありがとう。

4

2 に答える 2

0

http://nodejs.org/の最初の http-server の例を見てください。

指定された IP-Address:Port に到着するブラウザーからの要求をリッスンする http サーバーを作成する必要があります。リクエストが到着すると、サーバーは指定されたレスポンスをブラウザに送信します。

于 2012-07-31T15:43:01.463 に答える
0

これは、コードをスリープ状態にする方法ではありません。while ループは「スリープ状態」ではなく、可能な限り高速に処理しています。あなたの場合、目的地にたどり着こうとして、次から次へと日付を取得しています。

これがどのように機能するかについては、こちらをご覧ください。 http://nodejs.org/api/http.html

于 2012-07-31T15:27:51.657 に答える