[英]Async AJAX request wrapped in function won't work with promise()
我正在执行异步AJAX请求,这些请求被wrapped
为函数。 在$ .ajax是Deferred对象的情况下,我可以正确使用.promise(检查:Initially Loaded),然后我将无法对“ Now实际上已加载”执行相同操作,该操作将在ajax完成加载之前执行。
function WSCall(method, data, callback, type, async, bg) {
// .. code ..
var promise = $.ajax({
'url': useSampleData ? useSampleData || null,
//'async': false,
'type': 'POST',
'dataType': (type == null) ? 'json' : type,
'data': data,
'beforeSend': bg ? null : LoadingBegin,
'complete': bg ? null : LoadingEnd,
'success': callback,
'error' : bg ? null : function(jqXHR, textStatus, errorThrown) { networkError = 1; }
});
promise.done(function(){ console.log('Initially loaded') });
}
function aSyncEvent() {
WSCall(
'status',
{},
function (data) {
if (data.error) {
console.log('Error occured'); return ShowDialogAlert(data.error); }
if (data.statusResult) {
var parts = data.statusResult.split('-');
if (parts[1] === '0') {
sId = parts[0];
console.log('Wow its loaded!');
return true;
}
}
}
)
}
$.when( aSyncEvent() ).then( function () { console.log('now really loaded')});
最初加载后,哇,它的加载将在ajax以正确的顺序执行后正确显示,但是在ajax完成执行之前,将出现“现在已真正加载”。
我希望就此事寻求帮助。
谢谢迈克
您是否尝试过退还您的延期?
function WSCall(method, data, callback, type, async, bg) {
// .. code ..
return promise.done(function(){ console.log('Initially loaded') });
}
和
function aSyncEvent() {
return WSCall(
// .. code ..
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.