1

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

看来我的 getJSON 请求不会阻塞线程。有人告诉我 javascript 不是多线程的,那么如何在这些服务器调用之间进行阻塞呢?

4

3 回答 3

3

jQuery 的ajax函数都返回一个实现Promise 接口的jqXHR对象

不要阻塞异步请求(以及其他所有请求),而是像这样嵌套您的请求

$.ajax({...})
    .done(function( data ) {
        // second request
        $.ajax({...});
    });
于 2013-07-16T11:21:14.723 回答
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
            }                
        });
    }
});
于 2013-07-16T11:28:08.047 回答
1

以异步错误模式将您的第一个 ajax 请求调用到服务器

$.ajax({
url: Url,
dataType: 'json',
async: false,
 data: myData,
 success: function(data) {
  //stuff
  }
});
于 2013-07-16T11:17:19.410 回答