我一直在研究Jquery的when
then
和deferred
个关键字&函数但我无法在我的一个视图的ready()
函数中将它如何应用于简单的第三方异步回调方法。
实际发生的是我的视图得到loaded
没有数据,因为数据应该从ready()
中完成的异步方法执行中填充,但视图为loaded
在异步回调方法可以输入它的回调方法之前。我已经在该回调方法中发出警告,并且在完全加载后页面已经离开脚本时它永远不会弹出。
与此相关,我也在研究jQuery.holdReady()。关于如何在这种设计中实现同步性,我有点徘徊。
这就是它的样子。
$( document ).ready(function() {
var xmlRequest = $('#requestStringHiddenField').val();
var action = "getListOfReservations";
asynchronousCallbackCall(xmlRequest, "callbackMethod", action);
});
function callbackMethod(result) {
//unreachable
alert(result);
}
感谢任何帮助。
答案 0 :(得分:0)
如果asynchronousCallbackCall
的第二个和第三个参数是回调函数,则应该自己传递函数,而不是将它们的名称作为字符串传递:
var action = getListOfReservations;
asynchronousCallbackCall(xmlRequest, callbackMethod, action);
答案 1 :(得分:0)
如果使用$.ajax
执行异步调用,则应使用属性async: false
,这将阻止脚本执行,直到调用完成并返回响应。
有关$.ajax
的更多信息,请参阅此链接:
答案 2 :(得分:-1)
使用同步调用而不是异步调用。同步请求在执行下一个代码之前等待调用完成。
var request = new XMLHttpRequest();
request.open('GET','/ getListOfReservations',false); //'false'使请求同步
request.send(NULL);
if(request.status === 200){
警报(request.responseText);
}