我正试图集中精力协调异步操作。我需要一点帮助理解:
- 为什么使用 while 循环等待操作完成是一个坏主意并且不起作用,并且
- 如果有在 jQuery 函数上使用回调的可行替代方案
大多数情况下,将回调添加到像 $.get() 这样的异步函数效果很好。然而,在某种程度上,这确实决定了我不喜欢的代码的编写方式和位置。
$(function() {
var r = AjaxResults( page );
// loop prevents further processing until GetResults() is done
while( isComplete == false )
isComplete = $('body').data('isComplete');
// reset isComplete boolean
$('body').data('isComplete', false);
// this will only continue after GetResults() has exited
paintTheTownRed();
var whateverElse = true;
});
function AjaxResults( page ) {
// do something before async operation
switch( page ){
case '1': {...} break;
...
default: break;
}
$.getJSON("/controller/page", null, function(data) {
// do something after async operation
{...}
$('body').data('isComplete', true);
return data;
});
}