【发布时间】:2017-06-04 19:19:28
【问题描述】:
我正在尝试拨打DELETE 并正在实现以下功能。我知道在一个承诺中,需要有一个“解决”和一个“拒绝”状态,但我收到了一个未处理的承诺拒绝错误:
UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:1):[object Object]
我真的不喜欢在 Promise 中使用条件语句,因为它会变得混乱,但我在这里要做的是检查组织是否经过验证,如果是,则不应发生删除操作并且会拒绝。
function deleteOrg(id) {
return new Promise((resolve, reject) => {
// A helper function that returns an 'org' object
findById(id)
.then((orgObject) => {
if (orgObject.verified_at !== null) {
throw new Error(422, 'Unable to delete organization')
}
//Organization is not verified, so proceed to delete
new Organization().where({'id': id}).destroy()
.then(() => {
return resolve() //return 200 upon deletion
})
.catch((err) => {
return reject(new Error(500, 'Unable to delete organization'))
})
})
.catch((err) => {
const m = `Unable to delete organization: ${err.message}`
return reject(new Error(500, m))
})
})
}
我很确定我在处理 if 中的拒绝错误。
【问题讨论】:
-
正如@JaromandaX 所说!既然
findById返回Promise,为什么还需要Promise构造函数?你可以then这是结果。 -
@JaromandaX 感谢您分享我的链接 :-)
-
未处理的拒绝是否有任何类型的堆栈跟踪?
-
@Bergi - 我经常看到它,我不得不:p
标签: javascript node.js ecmascript-6 promise