我正在开发一个涉及大量大文件的项目,我只需要提取HTTP header
而不是完全加载文件本身,所以我使用的是request
模块立即提取HTTP头,然后中止请求,因为我不需要完整的文件。唉,我当前的结构让我分配了请求对象,然后使用response
的监听器,如下所示。
const req = request(url);
req.on('response', function(res) {
if (res.statusCode !== 200) {
req.abort();
return this.emit('error', new Error('Bad status code'));
}
if (res.headers.hasOwnProperty(headProp)) {
parseFunc(res.headers);
req.abort();
}
});
理想情况下,如果可能的话,我希望利用Promise来解析请求URL,如:
const req = request.getAsync(url)
req.on('response', function(res) {
//whatever logic
});
req.then(parseFunc(res.headers);
但是由于请求对象尚未保存到任何内容,因此侦听器事件无法正常工作。此外,then
上的链式request.getAsync.then
似乎只在解析文件后执行,这可能是10-11秒,相对于退出时的250ms-1s中止。
因此,简而言之:我可以在避免回调的同时获得我想要的功能吗?