如果设置http.get超时控制

var timeout_wrapper = function (req) {
    return function () {
        // do some logging, cleaning, etc. depending on req
        req.abort();
    };
};

但这种可能不够灵活,更高级的:

var timeout_wrapper = function (req) {
    return function () {
        // do some logging, cleaning, etc. depending on req
        req.abort();
    };
};

var request = http.get(options, function (res) {
    res.on('data',function (data) {
        file.write(data);
        // reset timeout
        clearTimeout(timeout);
        timeout = setTimeout(fn, 10000);
    }).on('end',function () {
            // clear timeout
            clearTimeout(timeout);
            file.end();
            console.log(file_name + ' downloaded ');
            cb(null, file.path);
        }).on('error', function (err) {
            // clear timeout
            clearTimeout(timeout);
            console.log("Got error: " + err.message);
            cb(err, null);
        });
});

// generate timeout handler
var fn = timeout_wrapper(request);

// set initial timeout
var timeout = setTimeout(fn, 10000);
原文地址:https://www.cnblogs.com/HughTan/p/3489406.html