在 promise 对象中处理错误结果的正确方法是什么?
What's the proper way to handle error result in promise object?
假设有一个 promise 对象:
return new Promise((resolve, reject) => {
request.post(options, (err, res, body) => {
if(err) {
reject(err);
} else {
resolve(body);
}
});
});
回调有错误属性,我可以用reject()
来处理。但是对于正文,我可以得到 {ok: 1}
或 {ok: -1}
。那么我该如何处理这个错误结果呢?
我想我可以 resolve()
body
,然后在 then()
中查看结果。或者我应该立即检查结果并将错误结果放入 reject()
?
根据我的经验,您可能不需要传递正文本身,而是传递命令是否成功的解释。所以试试这个
return new Promise((resolve, reject) => {
request.post(options, (err, res, body) => {
if(err) {
return reject(err);
}
if (body.ok == -1) return reject('bad news');
return resolve('good news');
});
});
然后您将其用作:
funcAboveThatReturnsPromise()
.then( () => res.sendStatus(200).end() )
.catch( err => res.sendStatus(500).send(err) )
你的 body 中的一个错误应该被认为是错误的 - 一个错误 - 并因此拒绝。虽然理想情况下服务器应该 return 错误状态 code.Here 如果你不能修改服务器我会怎么做:
return new Promise((resolve, reject) => {
request.post(options, (err, res, body) => {
if(err) {
reject(err);
} else if (body.ok === -1) {
reject(new Error('error'));
else {
resolve(body);
}
});
});
假设有一个 promise 对象:
return new Promise((resolve, reject) => {
request.post(options, (err, res, body) => {
if(err) {
reject(err);
} else {
resolve(body);
}
});
});
回调有错误属性,我可以用reject()
来处理。但是对于正文,我可以得到 {ok: 1}
或 {ok: -1}
。那么我该如何处理这个错误结果呢?
我想我可以 resolve()
body
,然后在 then()
中查看结果。或者我应该立即检查结果并将错误结果放入 reject()
?
根据我的经验,您可能不需要传递正文本身,而是传递命令是否成功的解释。所以试试这个
return new Promise((resolve, reject) => {
request.post(options, (err, res, body) => {
if(err) {
return reject(err);
}
if (body.ok == -1) return reject('bad news');
return resolve('good news');
});
});
然后您将其用作:
funcAboveThatReturnsPromise()
.then( () => res.sendStatus(200).end() )
.catch( err => res.sendStatus(500).send(err) )
你的 body 中的一个错误应该被认为是错误的 - 一个错误 - 并因此拒绝。虽然理想情况下服务器应该 return 错误状态 code.Here 如果你不能修改服务器我会怎么做:
return new Promise((resolve, reject) => {
request.post(options, (err, res, body) => {
if(err) {
reject(err);
} else if (body.ok === -1) {
reject(new Error('error'));
else {
resolve(body);
}
});
});