如何在不使用异步的情况下控制回调并阻止它们返回?

时间:2015-05-25 09:15:07

标签: javascript angularjs callback control-flow

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

前端App.js

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

Serverside消息控制器

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

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

1 个答案:

答案 0 :(得分:0)

检查你的回调。

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

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

在模型返回后,可能希望res.send返回回调内部。

评论中关于异步的想法。