Deferred - Chain Multiple AJAX Calls - Pass Response to Multiple Chained Promises - NO DFD Wrapper FN - BIZAMAJIG USAGE
by bizamajig
HTML
<div>
</div>
JavaScript
var bizamajig__set__workspace__element__update__dfd = function( request__context )
{
console.log('bizamajig__set__workspace__element__update__dfd started ' + request__context.target_container);
var bizamajig__dfd__return = $.Deferred();
$.ajax({
url: '/echo/json/',
type: 'post',
// data: { json: '{ "columns": ["a", "b", "c"] }', delay: 2 }
data: { json: request__context.target_container, delay: 2 }
}).done( function( response ) {
// bizamajig__dfd__return.resolve( response.columns );
response = request__context.target_container + 'BBB<br />';
alert( response );
bizamajig__dfd__return.resolve( response );
});
return bizamajig__dfd__return.promise();
}
// function loadSelectedColumns( columns ) {
function loadSelectedColumns( response ) {
console.log('loadSelectedColumns started', response);
var bizamajig__dfd__return = $.Deferred();
$.ajax({
url: '/echo/json/',
type: 'post',
// data: { json: '{}', delay: 2 }
data: { json: response, delay: 2 }
}).done( function( data ) {
// bizamajig__dfd__return.resolve( columns.map( function(i) {
// return 'data_for_' + i
// }));
response = response + 'CCC<br />';
alert( response );
bizamajig__dfd__return.resolve( response );
});
return bizamajig__dfd__return.promise();
}
function render( response ) {
console.log('render started', response);
/*
// THIS WORKS FOR THE COMMENTED OUT CODE:
var $ul = $('ul'),
len = data.length,
i;
for ( i = 0; i < len; i++ ) {
$ul.append( $('<li />').text( data[i] ) );
}
*/
$( 'div' ).append( response );
}
/*
bizamajig__set__workspace__element__update__dfd({
target_container: 'AAA<br />'
}).pipe( loadSelectedColumns ).pipe( render );
*/
var bizamajig__dfd__call = bizamajig__set__workspace__element__update__dfd({
target_container: 'AAA<br />'
});
...