function_run_ajax_sequential( ajax_item_list, callback_success, callback_fail, callback_after_all_call, callback_fail_after_all_call ) { // function to trigger the ajax call let ajax_request = function (item) { let deferred = $.Deferred(); $.ajax({ url: item['url_str'], dataType: "json", type: 'POST', success: function (data) { // do something here if (_isFunction(callback_success)) callback_success(data); // mark the ajax call as completed deferred.resolve(data); }, error: function (error) { // mark the ajax call as failed if (_isFunction(callback_fail)) callback_fail(error); deferred.reject(error); } });
return deferred.promise(); };
let looper = $.Deferred().resolve();
// go through each item and call the ajax function $.when.apply($, $.map(ajax_item_list, function (item, i) { looper = looper.then(function () { // trigger ajax call with item data returnajax_request(item); }); return looper; })).then(function () { // run this after all ajax calls have completed if (_isFunction(callback_after_all_call)) callback_after_all_call(); return; //console.log('Done!'); }).fail(function () { if (_isFunction(callback_fail_after_all_call)) callback_fail_after_all_call(); _loading(); return; }); }