是否始终调用请求的回调?

时间:2014-03-09 20:17:20

标签: javascript node.js http request npm

我使用npm模块request,但很多时候一些请求永远不会被回调,这会导致很多问题。

所以我想知道,请求应该总是回调?比如,如果我的请求超时,是否回调错误,还是忽略我的回调?

如果它忽略它,我怎么能100%确定我的函数被调用并且能够知道请求在任何情况下都不起作用?

1 个答案:

答案 0 :(得分:0)

是的,总是执行回调函数。

var opt = {
    url: 'http://stackoverflow.com',
    timeout: 1 // one milisecond, my ping is 100 ms
};

request.get(opt, function (err, res, body) {
    if (err) {
        console.log(err.stack);
    } else {
        console.log(body);
    }
});

输出:

Error: ETIMEDOUT
    at null._onTimeout (C:\node\node_modules\request\request.js:677:15)
    at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

您可以查看请求代码请求如何发出此错误:

https://github.com/request/request/blob/master/request.js#L750