如何在getJSON上阻止线程

时间:2013-07-16 11:09:34

标签: javascript jquery json

我需要从我的JQuery 1.9.1应用程序中进行两次Web服务调用。在进行第二次调用之前,我需要第一个结果。

看来我的getJSON请求不会阻塞该线程。我被告知javascript不是多线程的,那么如何阻止这些服务器调用?

3 个答案:

答案 0 :(得分:3)

jQuery的ajax个函数都返回jqXHR object来实现Promise interface

不是阻止异步请求(以及其他所有内容),而是嵌套您的请求

$.ajax({...})
    .done(function( data ) {
        // second request
        $.ajax({...});
    });

答案 1 :(得分:2)

好吧,你不需要阻止线程,这是旧学校。

您有两种选择:

  • 使ajax调用同步。
  • 级联ajax调用,所以第二个调用只在第一个调用完成后才生成。

我推荐第二种方法,因为这是正确的方式。

/* Call 1 */
$.ajax({
    url: 'first url to call',
    data: 'first data sent to the server',
    success: function (results1){

        // Do something with the results    

        /* make the second call */
        $.ajax({
            url: 'sencond url to call'
            data: 'second data sent to the server'
            success: function(results2){

                // Do something when all completed
            }                
        });
    }
});

答案 2 :(得分:1)

async false 模式中的第一个ajax请求调用到服务器

$.ajax({
url: Url,
dataType: 'json',
async: false,
 data: myData,
 success: function(data) {
  //stuff
  }
});