gpt4 book ai didi

node.js - 如何在 Promise 中间返回响应给客户端?

转载 作者:搜寻专家 更新时间:2023-11-01 00:23:01 25 4
gpt4 key购买 nike

例如,

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);
});

这个 promise 写对了吗?这种 promise 怎么写?回调/ promise 是一个令人头疼的问题......

最佳答案

您正在使用 Bluebird ,它支持 cancellation .这是一个例子:

var Promise = require('bluebird');
// enable cancellation
Promise.config({
cancellation: true
});

// store your promise chain
var myPromise = Promise.resolve().then(() => {
return 'foo';
}).then((res) => {
console.log(res);
// call cancel on the chain when needed
myPromise.cancel();
return res;
}).then((res) => {
// this will not be executed
console.log(res + '2');
});

关于node.js - 如何在 Promise 中间返回响应给客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36053499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com