什么'这是处理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);
}
});
});
回调中有一个error属性,我可以用reject()
来处理它。但有了body,我可以得到{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) )
身体中的错误应该被视为错误,因此拒绝。尽管理想情况下服务器应该返回错误状态代码。如果你不能修改服务器,我会这么做:
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);
}
});
});
相关文章:
- 如何知道javascript for语句中的所有结果是否都是错误的
- JScript 错误: 无法分配给函数结果
- json-api和错误结果:无法读取属性'长度'的未定义
- 显示错误结果的Javascript
- javascript使用正则表达式得到错误的结果
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- 原型中漂亮的代码,如何省略'不是函数'空结果选择器上的错误
- 在JavaScript中解析日期时得到错误的结果
- YouTube API v3哈希标签搜索错误结果
- jQuery.Validate - 如何将错误结果放在不同的地方
- JavaScript 数学给出了完全错误的结果
- web programming_javascript:javascript中的Grade结果错误
- 用javascript解析json并显示结果错误
- nodejs, http请求,解析结果错误
- ionic FileTransfer不给出结果/错误/反馈,然后做成功函数
- 在Javascript页面中搜索-一个结果错误
- TypeError: Object没有方法'split'分割结果错误[0].geometry.locat
- OpenLayers EPSG900913- EPSG4326转换结果错误
- Extendscript Javascript计算结果错误
- 按子字符串过滤的结果错误