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);