Лучший способ справиться с этим - определить функцию обратного вызова, которая вызывается после завершения Ajax-вызова.
Вот простой (jQuery-ориентированный) пример:
function ajaxComplete() {
window.close();
}
function MakeParentRequest() {
$.post('get_job.php', {tab: 'journals'}, function( data, txtStatus, jqXHR) {
ajaxComplete();
});
}
Тогда не имеет значения, сколько времени займет вызов ajax, вы не закроете окно, пока оно не будет сделано.Кроме того, он позволяет вам лучше обрабатывать случай, когда ваш ajax-вызов завершается неудачно, и вам нужно сделать что-то еще.
Вы можете даже передать обратный вызов в качестве аргумента MakeParentRequest()
function MakeParentRequest(callback) {
$.post('get_job.php', {tab: 'journals'}, function( data, txtStatus, jqXHR) {
if(typeof callback == 'function') {
callback();
}
});
}
MakeParentRequest(ajaxComplete);