要同步的异步函数

时间:2015-01-14 11:51:24

标签: node.js asynchronous sync

我正在尝试按照它的顺序运行一个函数而且只是不能。 我曾尝试阅读一些问题和答案,但不明白。 如何在alert("1")

之前发现alert("2");
this.getCustomers = function () {
        $http
        .get('/getMessages').success(function (data,status) {
              alert("1");
              return data;
         });
         alert("2");    

    };

谢谢!

3 个答案:

答案 0 :(得分:0)

只有在getMessages请求返回成功响应后,才会执行success函数中的代码。因此,要在警报('1')之后发出警报('2'),请将警报('1')后的代码放入,但仍然在成功函数中:

this.getCustomers = function () {
    $http
    .get('/getMessages').success(function (data,status) {
        alert("1");
        alert("2");  
     });
};

答案 1 :(得分:0)

看看这段代码。它使用监视功能等待第一个对话框被点击。

节点全部是非阻塞的,因此这个异步监视将确保警报按您想要的顺序排列。

var first = alert("1");

var stopWatching = $scope.$watch(function () {
        return first;
    }, function () { 
        alert("2");
        stopWatching();
    }, true);

答案 2 :(得分:0)

您可以使用Composable-middleware。

示例:

composable_middleware()
    .use($http.get('/getMessages').success(function (data,status) {
          alert("1");
          return data;
     }))
    .use(function(req,res,next) {
            alert("2"); 
    });

更多信息:https://github.com/randymized/composable-middleware

和npm link:https://www.npmjs.com/package/composable-middleware