有人能告訴我爲什麼,當「關於請求錯誤拒絕」遇到,這個功能也沒有什麼回我是從調用它的功能?node.js http GET - 爲什麼遇到錯誤時它不會返回調用函數?
我想返回到調用此功能的錯誤消息,但它出現在代碼只是停止遇到所表示的錯誤時執行。
function httpRequest(options, postData) {
console.log('DEBUG - httpRequest - begin');
return new Promise(function(resolve, reject) {
console.log('DEBUG - httpRequest - a');
var req = http.request(options, function(res) {
console.log('DEBUG - httpRequest - b');
// reject on bad status
if (res.statusCode < 200 || res.statusCode >= 300) {
console.log('DEBUG - httpRequest - error: bad status ' + res.statusCode);
return reject(new Error('statusCode=' + res.statusCode));
}
// cumulate data
var body = [];
res.on('data', function(chunk) {
body.push(chunk);
});
// resolve on end
res.on('end', function() {
console.log('DEBUG - httpRequest - res.on end');
try {
console.log('DEBUG - httpRequest - body = ' + body);
body = JSON.parse(Buffer.concat(body).toString());
} catch(e) {
console.log('DEBUG - httpRequest - reject(e)');
reject(e);
}
resolve(body);
});
});
// reject on request error
req.on('error', function(err) {
// This is not a "Second reject", just a different sort of failure
console.log('DEBUG - httpRequest - req.on error (second) err = ' + err.response);
reject(err); // *** <--- Why doesn't the error message here get returned to the calling function?
});
if (postData) {
req.write(postData);
}
req.end();
console.log('DEBUG - httpRequest - req.end');
});
}
你妥善處理返回的承諾? – robertklep
我喜歡這個調用它:HttpRequest的(選項,功能(錯誤,curConditions){ 的console.log( 'DEBUG - 164 - 錯誤=' + error.response); }); 根據我的console.log語句,它似乎沒有返回錯誤。 –