javascript - SailsJS/NodeJS 管理异步性质

标签 javascript node.js asynchronous sails.js waterline

我的 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/

相关文章:

javascript - Express - 导出多个 Router() 还是单个 Router()?

javascript - 这是使现有 JavaScript 异步的方法吗?

javascript - 使用 javascript 根据内容放置位置为元素应用 Css

javascript - 是否可以在 Pug 中访问和修改从 Express 传递的变量?

javascript - 如何以编程方式更改 jquerymobile 页面并将数据发送到该页面?

node.js - 如何在没有套接字的情况下及时发送多个HTTP响应(报告服务器处理状态)

ios - swift 中的闭包正在做任何事情。我的代码执行不正常

java - 在JAVA中发出多个http请求的快速异步方法

javascript - 如何在 HTML(CSS) 中绘制一半的字母或文本?

javascript - 在动态元素上应用渐变或纯色