我需要从我的 JQuery 1.9.1 应用程序中调用两个 Web 服务。在拨打第二个电话之前,我需要第一个的结果。
看来我的 getJSON 请求不会阻塞线程。有人告诉我 javascript 不是多线程的,那么如何在这些服务器调用之间进行阻塞呢?
我需要从我的 JQuery 1.9.1 应用程序中调用两个 Web 服务。在拨打第二个电话之前,我需要第一个的结果。
看来我的 getJSON 请求不会阻塞线程。有人告诉我 javascript 不是多线程的,那么如何在这些服务器调用之间进行阻塞呢?
jQuery 的ajax
函数都返回一个实现Promise 接口的jqXHR
对象。
不要阻塞异步请求(以及其他所有请求),而是像这样嵌套您的请求
$.ajax({...})
.done(function( data ) {
// second request
$.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
}
});
}
});
以异步错误模式将您的第一个 ajax 请求调用到服务器
$.ajax({
url: Url,
dataType: 'json',
async: false,
data: myData,
success: function(data) {
//stuff
}
});