Асинхронные функции для синхронизации
Я пытаюсь запустить функцию в соответствии с ее порядком и просто не могу. Я пытался прочитать некоторые вопросы и ответы, но не понял. Как я могу сделать 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