Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用promisified请求很好地处理非HTTP 200响应_Javascript_Node.js_Request_Promise - Fatal编程技术网

Javascript 如何使用promisified请求很好地处理非HTTP 200响应

Javascript 如何使用promisified请求很好地处理非HTTP 200响应,javascript,node.js,request,promise,Javascript,Node.js,Request,Promise,使用授权请求: const request = Promise.promisify(require('request')); Promise.promisifyAll(request); request('http://google.com').spread(function(res, body) { }).catch(function(e) { // does not get hit on HTTP 404 }); 这很好地工作,不幸的是,catch的错误块没有像人们所期望的那样在非

使用授权请求:

const request = Promise.promisify(require('request'));
Promise.promisifyAll(request);


request('http://google.com').spread(function(res, body) {
}).catch(function(e) {
  // does not get hit on HTTP 404
});
这很好地工作,不幸的是,
catch
的错误块没有像人们所期望的那样在非HTTP 200上命中。是否有办法更改行为,从而触发块

也许像

if (res.statusCode !== 200) { reject(res) }

不确定。从某种意义上说,这是有道理的,因为这是一个恰当的回应,不一定是一个不可预见的事件,但我想清楚地使用承诺,以提高可读性。

您可能想看看,因为它会为您带来好处。您甚至可以使用Bluebird的
.catch()
谓词。谢谢,我将使用它。