说那是一个承诺对象:
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()
?
答案 0 :(得分:2)
根据我的经验,你可能不需要传递身体,而是解释命令是否成功。所以试试这个
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) )
答案 1 :(得分:1)
你身体的错误应该被认为是错误的 - 然后拒绝。虽然理想情况下服务器应该返回错误状态代码。如果你不能修改服务器,我会怎么做:
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);
}
});
});