誰かが私にそれを呼び出す関数に何も返さない "要求エラーで拒否"に遭遇したとき、なぜこの関数は何を教えてもらえますか?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(options、function(error、curConditions){ console.log( 'DEBUG-164-error +' error.response); }); 私のconsole.logステートメントに基づいて、エラーが返されていないようです。 –