在 node 中.js如果没有收到来自 http 请求的响应,你怎么知道



好的,所以在下面的例子中,我从服务器请求一些东西。如果返回响应,我会解析 JSON 并将数据添加到我的 mongodb 中。

但是,如果没有响应返回,则显然不会触发任何事件。我将如何为此添加超时,以便在没有收到响应的情况下,我可以取消请求而不会引发任何错误,并调用函数?(我将让它调用一个给我发电子邮件的函数。

谢谢!

var req = https.request(options, function(res) {
        res.on('data', function(d) {
            if(d) buffer += d;
        });
        res.on('end', function(){
            var validResponse = true;
            var object;
            try {
                object = JSON.parse(buffer);
            } catch (err) {
                console.log('response: '+ buffer);
                console.log('error in response: ' + err);
                validResponse = false;
            }
            if(validResponse) {
                db.stuff.update(
                    {stuff: "MyStuff"},
                    {stuff: "MyStuff", foo: object.bar},
                    {upsert: true},
                    function() {
                        var time2 = new Date();
                        console.log('db successfully updated db at '+time2.toTimeString());
                    }
                );
            }
        });
    });
您可以使用

request.setTimeout(timeout, [callback]) api。

req.setTimeout(5000, function() {  
  console.log('timed out');
  req.abort();
});

相关内容

  • 没有找到相关文章

最新更新