【发布时间】:2016-02-22 10:57:05
【问题描述】:
我在 node.js 中使用 promise 对象。我有一个对象:
var Send = {
send(post_ids) {
return Post.findById(post_ids)
.then((posts) => {
return sendArticlesToWechat(setupArticles(posts)); // sendArticlesToWechat is also a promise
})
.then((result) => {
console.log("RESULT: " + result);
})
.catch((err) => {
console.error("SEND ERROR: " + err);
return err;
});
},
}
export default Send;
并在另一个文件中调用它的方法:
Send.send(req.body)
.then((result) => {
console.log("CALL SEND: " + result);
})
.catch((err) => {
console.error(err);
});
发生错误时,我得到两个输出:
SEND ERROR: ERROR: // error message
CALL SEND: ERROR: // error message
此错误发生在返回的sendArticlesToWechat() 函数中。因为这也是一个承诺,所以我可以在外面catch 它的错误。这是我所期望的。
当我调用Send.send() 时,我预计会在catch() 中得到错误,但错误出现在then() 方法中。
根据输出,错误确实是从之前的catch()返回的,为什么我不能保留在catch()中?
【问题讨论】:
标签: javascript node.js promise