Асинхронные функции для синхронизации

Я пытаюсь запустить функцию в соответствии с ее порядком и просто не могу. Я пытался прочитать некоторые вопросы и ответы, но не понял. Как я могу сделать alert("1") случиться раньше alert("2");

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

    };

Спасибо!

3 ответа

Посмотрите на этот код. Он использует функцию наблюдения для ожидания первого щелчка мышью.

Все узлы неблокируемы, поэтому эти асинхронные часы будут следить за тем, чтобы оповещения были в нужном вам порядке.

var first = alert("1");

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

Код в функции успеха будет выполнен только после того, как запрос getMessages вернет успешный ответ. Поэтому, чтобы сделать предупреждение ('2') после предупреждения ('1'), поместите код после предупреждения ('1'), но все еще в функции успеха:

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

Вы можете использовать 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: https://www.npmjs.com/package/composable-middleware

Другие вопросы по тегам