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 示例。

您必须创建一个 http-server 来侦听来自到达指定 IP-Address:Port 的浏览器的请求。一旦请求到达,服务器将指定的响应发送到浏览器。

于 2012-07-31T15:43:01.463 回答
0

这不是让你的代码休眠的方法!while 循环不是“休眠”,而是尽可能快地处理。在您的情况下,它会日复一日地试图到达您的目的地。

看看这里看看这个*应该如何工作。 http://nodejs.org/api/http.html

于 2012-07-31T15:27:51.657 回答