У меня есть страница с несколькими формами, которые я отправляю через Ajax POST. Сначала я пытался использовать синхронные запросы XHR, но это приводит к блокировке браузера на время выполнения запроса и нарушает мои эффекты манипуляции с DOM, что недопустимо. Таким образом, шаблон, который я в итоге использовал, в основном таков:
var fcount = 0; // incremented for each form to be submitted
function submit_form( num ) {
var fdata = { ... }; // data from form # num
$.ajax( { async: true,
url: '/index.cgi',
data: fdata,
type: 'POST',
success: function() {
if ( num < fcount ) {
submit_form( ++num );
}
}
} );
}
$( '#submit_form_btn' ).click( function() { submit_form( 1 ) } );
Рекурсия кажется мне некрасивым решением проблемы, которая по сути является итеративной. Есть ли более чистый или более изящный способ, которым с этим можно справиться?