Я делаю мыло звонок в угловую, как показано нижеЗавершение вызова мыла, прежде чем перейти к следующей строке кода
app.factory('service', ['$soap', function ($soap) {
return {
SampleRequest: function (param1,param2) {
return $soap.post(url, "SampleRequest", {
'Request': {
'input1': param1,
'input2': param2,
}});
}
}
}])
Я определил его, как показано ниже для вызова веб-сервиса
$rootScope.callSoapService = function() {
service.SampleRequest("Hello","World").then(function (response) {
if (response.Valid == 'Y') {
//do something
}
}
}
и определил его как этот
function callService() {
$rootScope.callSoapService();
}
Теперь мой вопрос, когда я делаю что-то вроде ниже
$rootScope.dosomething = function(){
function1();
callService();
function2();
}
проблема была Функция1 выполняется и возвращает и переходит к следующей строке callService, где она не будет закончить вызов, но выполняет следующую строку, которая была function2(), а затем, наконец, выполняет запрос на мыло. Есть ли способ заставить его выполнить последовательность?
Yup, это асинхронный код. Невозможно заблокировать его (к счастью), поэтому вам нужно научиться использовать обещания. Попробуйте найти здесь http://stackoverflow.com/a/17522010/854556 –
Возможный дубликат [Как получить Javascript для ожидания асинхронного вызова перед продолжением?] (Http://stackoverflow.com/questions/17521920/how- в-получить Javascript-к-ждать-в-ан-асинхронной-вызов-перед тем, протекающей) –