Как я могу объединить свои ошибки из пакета npm запроса?
Пока что у меня есть:
request(opts, function(err, response, body) {
var user;
if (err) {
throw err;
}
if (response.statusCode !== 200) {
throw 'Invalid statusCode';
}
if (body.status !== 'ok') {
throw body.error;
}
return user = body.user;
});
Это кажется немного многословным, так есть ли способ объединить этот фрагмент кода?
1 ответ
Решение
Не очень много улучшений (больше похоже на гольф кода), но вот пример использования короткозамкнутых логических операторов для более краткого Javascript:
request(opts, function(err, response, body) {
err = err ||
(response.statusCode !== 200 && 'Invalid statusCode') ||
(body.status !== 'ok' && (body.error || 'not ok'));
if (err) throw err;
return body.user;
});
Альтернативой может быть написание оболочки, которая объединяет для вас ошибки, если проблема заключается в одинаковой обработке ошибок в нескольких местах:
function request_wrapped(opts, callback) {
request(opts, function(err, response, body) {
if (!err && response.statusCode !== 200) {
err = 'Invalid statusCode';
}
if (!err && body.status !== 'ok') {
err = body.error;
}
callback(err, response, body);
});
}
Затем вы бы призвать request_wrapped
вместо request
и просто проверьте err
параметр в вашем обратном вызове, вот так:
request_wrapped(opts, function(err, response, body) {
if (err) throw err;
return body.user;
});