在转移到下一行代码之前完成soap调用

时间:2016-11-22 18:17:22

标签: angularjs

我正在以角度进行肥皂调用,如下所示

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请求。有没有办法让它按顺序执行?

1 个答案:

答案 0 :(得分:0)

请求是异步的,当您需要同步工作时,您应该使用promises。假设callService返回"承诺",您只需执行以下操作:

$rootScope.dosomething = function(){
    function1();
    callService().then(() => {
        function2();
    });
}