Например,Как вернуть ответ клиенту посреди обещания?
Comments.findOne({user: req.user.id}).exce()
.then(function(comment) {
if(comment) {
// how to make this return immediately and break the rest then?
return res.json({error: 'Already commented'});
} else {
return Posts.findOne({postId: req.params.id}).exec();
}
})
.then(function(post) {
if(post) {
var comment = new Comment({user: req.user.id, data: req.body.comment})
return {post: post, comment: comment.save()};
} else {
return res.json({error: 'Post not exist'});
}
})
.then(function(data) {
post.comments.push(comment._id);
return post.save();
});
.then(function(post) {
return res.json({ok: 1})
})
.catch(function(e)) {
return res.json(error: e);
});
Пишется право это обещание? Как написать такое обещание? Callbacks/Promises - головная боль ...
Возможный дубликат [как разорвать цепь обещание] (http://stackoverflow.com/questions/28803287/how-to-break-prom-chain) – mido
Что означает «вернуть ответ клиенту в середине обещания»? Что именно вы пытаетесь достичь? – jfriend00
FYI, есть посторонний ';' перед последним '.then()' в вашем коде, который вызовет ошибку. Это произойдет не так, как если бы вы закодировали как '}). Then()' вместо того, чтобы поместить '.then()' на следующую строку. – jfriend00