var defer = function(){
var deferred = {};
var _response = undefined;
var _state = 'wait';
deferred.promise = { };
deferred.resolve = function( successData ){
_response = successData; // be noticed of a severe scene : the passed value may be undefined here
_state = 'success'
};
deferred.reject = function( failData ){
_response = failData; // be noticed of a severe scene : the passed value may be undefined here
_state = 'fail'
};
deferred.promise.success = function( succ_callback ){
if( _state == 'success' && succ_callback && (typeof succ_callback == 'function') ){
succ_callback( _response );
}
};
deferred.promise.fail = function( fail_callback ){
if( _state =='fail' && fail_callback && (typeof fail_callback == 'function') ){
fail_callback( _response );
}
};
deferred.promise.wait = function( wait_callback ){
if( _state =='wait' && wait_callback && (typeof wait_callback == 'function') ){
wait_callback( _response );
}
};
return deferred;
};
var ds1 = defer();
ds1.resolve(24);
ds1.promise.success(function(d){
console.info(d);
});
var ds2 = defer();
ds2.reject(24);
ds2.promise.fail(function(d){
console.info(d);
});
var ds3 = defer();
ds3.promise.wait(function(d){
console.info('wait');
});