Ajax以同步方式调用多个服务

时间:2014-09-08 10:27:27

标签: jquery ajax

我正在编写一个页面,其中我们正在进行多次休息服务调用以实现我的功能。为了添加更多信息,我必须将serviceCall-ONE的响应作为serviceCall-TWO的请求传递。同样适用于Servicecall-THREE

$('#button').click(function() {
    fun1(); /* Actual called functions are written in a separate methods */
    fun2();
    fun3();
}); 

有没有办法在不使用.Done或.Then的情况下实现上述功能。 原因是不想实现.done回调是我应该能够为所有3种方法分别编写单独的单元测试用例,并且测试用例可以相互独立。

3 个答案:

答案 0 :(得分:1)

我认为您可以通过Caolan的异步库提出此请求 - https://github.com/caolan/async#waterfall

答案 1 :(得分:1)

如果你想使用单元测试,没有理由你不能仅仅使用函数(){}之类的空函数来“模拟”完成的回调 - 这是标准做法。

看看sinon图书馆 http://sinonjs.org/

答案 2 :(得分:1)

你可以用3个ajax函数实现你想要的。 尝试类似的东西:

$('#button').click(function() {
    ajax_function1();
});

ajax函数可能如下所示:

function ajax_function1(){
var url = "http://myurl.com";
var data = "some data";
jQuery.ajax({
            async:      true,
            type:       'POST',
            url:        url,
            data:       data,
            dataType:  "json", 
            success:    function(data, textStatus, jqXHR) {
                            if(data.status == 'success'){
                                //call your second function
                                ajax_function2(data);
                            } else {
                            } 
                        }
            });
}