我正在以角度进行肥皂调用,如下所示
app.factory('service', ['$soap', function ($soap) {
return {
SampleRequest: function (param1,param2) {
return $soap.post(url, "SampleRequest", {
'Request': {
'input1': param1,
'input2': param2,
}});
}
}
}])
我将其定义如下,用于调用webservice
$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();
}
问题是function1执行并返回并转到下一行callService,它不会完成调用但执行下一行是function2(),然后最终执行soap请求。有没有办法让它按顺序执行?
答案 0 :(得分:0)
请求是异步的,当您需要同步工作时,您应该使用promises。假设callService
返回"承诺",您只需执行以下操作:
$rootScope.dosomething = function(){
function1();
callService().then(() => {
function2();
});
}