我的 Controller 中有一个代码,用于处理 http 请求,以保存用户在前端添加的帖子。所以我做了类似 Model.create() 的事情。 现在发生的事情是回调,我想返回帖子是否成功添加,以便我的前端可以向用户显示适当的消息。但是 create 方法是异步工作的。 以下是示例代码:
create: function(req, res){
Activity.create(req.body).done(
function(err, persistedActivity) {
// Error handling
if (err) {
return res.json({success: false});
// The Activity could not be created!
} else {
return res.json({success : true});
}
}
);
但是这段代码不起作用,因为 Activity.create() 方法是异步的。 我也在其他问题或帖子中阅读过它。没有任何迹象表明我正在寻找的确切实现,但它确实告诉我“不要与 nodejs 的异步性质作斗争。它只会在以后造成伤害。”相信我,就像其他人一样,我不想受到伤害。 我基本上需要有关如何处理此问题的建议。
最佳答案
如果您想尝试使用 Sails promises,它看起来像这样:
create: function(req, res){
Activity.create(req.body)
.then(function(persistedActivity) {
return res.json({success : true});
})
.fail(function(err){
return res.json({success: false});
// The Activity could not be created!
})
}
我不太熟悉使用没有 promise 的 SailsJS,但是您可能想在链接创建调用时尝试使用 exec
而不是 done
?我知道我使用过 exec
,但我从未以这种方式使用过 done
。
--
更新:似乎 done()
已被弃用,取而代之的是 exec()
所以如果您使用的是 10.x,我肯定会尝试这样做
reference
关于javascript - SailsJS/NodeJS 管理异步性质,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23710170/