node.js - nodejs http请求,req.abort()和re.destory()的区别是什么?
迷茫
迷茫 2017-04-17 11:08:57
[Node.js讨论组]

在nodejs中进行http请求,设置超时,如果是req.abort() 那么http 请求还会是继续的,但是re.destory()就会彻底中止,他们详细区别是什么?

还有个超时问题,分为请求超时和响应超时,以前没这个概念,最近才认识到这个细节,我想问问这两个分别意味着什么?测试一个资源快慢,应该以哪个为标准?


var http = require('http');

var request_timer = null, req = null;
request_timer = setTimeout(function() {
    req.destroy();
    console.log('Request Timeout.');
    console.log('1');
}, 1000);
// 请求5秒超时

var options = {
    host: 'www.baidu.com',
    port: 80,
    path: '/'
}

req = http.get(options, function(e) {
    clearTimeout(request_timer);
}).on('error', function(err) {
    if(request_timer) {
        clearTimeout(request_timer);
        console.log('2');
    }
    console.log('3');
});

假设 timeout设置为 1ms(测试强制超时),req.destroy()的话 超时输出到3,直接退出,但是如果是req.abort()的话,等到输出3会过一会才会退出,按照nightire的说法,可能是请求已经发出,等待响应,所以req.abort()是没有影响的。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号