JSFiddle - React, Tailwind, and code Playground
HTML
<button id="btn">Send</button>
JavaScript
$(document).ready(function(){
var requests = {
types: [
'POST',
'PUT'
],
urls: [
'/url1',
'/url2'
],
data: [{
name: 'name1'
},{
name: 'name2'
}]
};
var ajaxian = new Ajaxian(requests, [function(){console.log('success')}, function(){console.log('success2')}]);
$(ajaxian).bind('allrequestcomplete', function(){
console.log('request sequence finished');
});
$(ajaxian).bind('requesterror', function(){
console.log('request sequence failed');
});
$('#btn').bind('click', function(){
ajaxian.startRequests();
});
});
//Depricated method for jQuery 1.8 used, success -> done, error -> fail
function Ajaxian(requests, successHandlers){
var self = this;
var me = $(this);
var _currentIndex = 0;
var _requests = null;
var _successHandlers = null;
var construct = function(requests, successHandlers){
_requests = requests;
_successHandlers = successHandlers;
requestHandler();
}
var getCurrentIndex = function(){
//return _currentIndex++ too slow?
var oldIndex = _currentIndex;
_currentIndex++;
return oldIndex;
}
var requestHandler = function(){
console.log('event listener binded');
console.log(me);
me.bind('requestcomplete', function(data){
//console.log(me);
//console.log('event triggered');
var index = getCurrentIndex();
//console.log('step 0');
if(_successHandlers[index - 1]){
console.log(data);
_successHandlers[index - 1](data);
}
console.log('step 1');
if(!_requests.urls[index]){
me.trigger('allrequestcomplete');
return;
}
...