promises
by Akram kamal
HTML
<ul>
</ul>
JavaScript
function getColumnsFromMeta()
{
console.log('getColumnsFromMeta started');
var d = $.Deferred();
$.ajax({
url: '/echo/json/',
type: 'post',
data: { json: '{ "columns": ["a", "b", "c"] }', delay: 2 },
success: function(response) { d.resolve(response.columns); }
});
return d.promise();
}
function loadSelectedColumns(columns)
{
console.log('loadSelectedColumns started');
var d = $.Deferred();
$.ajax({
url: '/echo/json/',
type: 'post',
data: { json: '{}', delay: 2 },
success: function(response) { d.resolve(columns.map(function(i) { return 'data_for_' + i })); }
});
return d.promise();
}
function render(data)
{
console.log(data);
var $ul = $('ul'),
len = data.length,
i;
for (i = 0; i < len; i++) {
$ul.append($('<li />').text(data[i]));
}
}
getColumnsFromMeta().pipe(loadSelectedColumns).pipe(render);