好的,在下面的示例中,我从服务器请求了一些内容。如果响应回来,我解析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());
}
);
}
});
});
答案 0 :(得分:2)
您可以使用request.setTimeout(timeout, [callback])
api。
req.setTimeout(5000, function() {
console.log('timed out');
req.abort();
});