【问题标题】:How do you control callbacks and stop them from returning without using async?您如何控制回调并阻止它们在不使用异步的情况下返回?
【发布时间】:2015-05-25 09:15:07
【问题描述】:

所以我正在开发一个使用 Node 和 Angular 的项目(第一个项目)。基本上,我想使用 Angulars $http 服务从数据库中获取一些内容,该服务调用在 Express 中设置的端点,该端点使用 Sequelize 查询数据库。这是每个的 sn-p:

前端 App.js

$http
    .get('/getmessages').success(function(data){
    $scope.messages = data;
    })

服务器端消息控制器

router.get('/', function(req, res, next){
    model.getMessages(function(results){
        return results;
    });
})

型号

exports.getMessages = function(callback){
  var result = model.findAll().then(function(messages){
  return callback(messages);
});

所以我面临的问题是代码在模型有机会返回之前快速返回,我需要对此进行控制。我真的需要为我的特定问题使用异步吗?我一直在研究如何控制流量,但我无法得到我需要的答案。如果您能看一下,请提前致谢。

【问题讨论】:

  • 有很多返回,但到哪里?您在输出内容的任何地方或某处有res.send 吗?

标签: javascript angularjs callback control-flow


【解决方案1】:

检查你的回调。

function(req, res, next){
  model.getMessages(function(results){
    return results;
}

您的服务器端代码将返回未定义。它将运行model.getMessages...当这发生时,由于没有什么可做的,只需返回。这就是为什么它看起来发生得太快了。

在你的模型返回后,可能想在回调中返回res.send

对 cme​​ts 中异步的思考。

【讨论】:

  • ...顺便说一句,异步并不是完全必要的,但我建议尝试弄清楚,因为这是在 Angular 中工作的好处之一,而且看起来你正在处理一个项目了解它。
  • 谢谢!我错过了 res.send。我想通过返回实际上不会像使用 PHP 和 AJAX 那样将 HTTP 响应发送回客户端。再次感谢
  • 没问题!你在卡住的地方做得很好,包括来自应用程序、服务器和模型的有用的 sn-ps。
猜你喜欢
  • 2019-10-27
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多