JSFiddle - React, Tailwind, and code Playground
by jhoguet
JavaScript
// calling save should start the ajax call
var body = $('body');
function print(message){
body.append('<p>' + message + '</p>');
}
function sleep(dfr, item){
setTimeout(function(){
print('awake');
dfr.resolveWith(null, [item]);
}, 1000);
}
function deferred(){
var _deferredGetter;
var _postDeferred = $.Deferred();
var fn = function(item){
_deferredGetter(item)
.then(function(message){
alert(message);
_postDeferred.resolveWith(null, [message]);
});
};
fn.by = function(deferredGetter){
_deferredGetter = deferredGetter;
};
fn.promise = function(){
return _postDeferred.promise();
};
return fn;
};
var save = deferred();
save.promise()
.then(function(message){
return message + ' > post save' ;
})
.done(print);
function daoSave (item){
var mockAjax = $.Deferred();
sleep(mockAjax, item);
return mockAjax
.then(function(message){
return message + ' > ajax';
})
.done(print);
};
save.by(daoSave);
print('saving now');
save('save');