开发者

How to make a function execute only after certain function completes?

开发者 https://www.devze.com 2023-03-03 19:39 出处:网络
Event.observe(document, \'dom:loaded\', function() { new Ajax.Request(\'/HumblFin/Serv\', { method:\'get\',
Event.observe(document, 'dom:loaded', function() {

    new Ajax.Request('/HumblFin/Serv', {
        method:'get',
        onSuccess: function(transport){
            var data = transport.responseText.evalJSON();
            drawChart(data);
        },
        onFailure: function(){ alert('Something went wrong...') }
    });


function drawChart(data)
{

     for (var i = 0; i < data.jobs.length; i++)  { 
         priceData.push([i, data.jobs[i].INCPU]);
         dateData.push(data.jobs[i].Dater);

        }
}

Hereafter completion of the drawchart(data) method only I want to execute the below code but unfortunately the function HumbleFinance.init is being called with empty data.

Please tell me how to solve this. I can't put the below code inside the drawChart(data) function

HumbleFinance.init('finance', priceData , dateData);
Event.observe(HumbleFinance.containers.summary, 'flotr:select', function (e) {

    var area = e.memo[0];
    xmin = Math.floor(area.x1);
    xmax = Math.ceil(area.x2);

    var date1 = dateData[xmin];
    var date2 =开发者_JAVA百科 dateData[xmax];

    $('dateRange').update(dateData[xmin] + ' - ' + dateData[xmax]);

});
});


Your call to HumbleFinance.init() is happening before you get your ajax response and process the data results. You need to make sure you process your ajax response before you call this init. To do that, you just move the init call to within the onSuccess callback, after the drawChart method call.

<script>
Event.observe(document, 'dom:loaded', function() {

    new Ajax.Request('/HumblFin/Serv', {
        method:'get',
        onSuccess: function(transport){
            var data = transport.responseText.evalJSON();
            drawChart(data);

            //Put your HumbleFinance.init call here, 
            //after the priceData and dateData has been generated.
            HumbleFinance.init('finance', priceData , dateData);
        },
        onFailure: function(){ alert('Something went wrong...') }
    });

    Event.observe(HumbleFinance.containers.summary, 'flotr:select', function (e) {

        var area = e.memo[0];
        xmin = Math.floor(area.x1);
        xmax = Math.ceil(area.x2);

        var date1 = dateData[xmin];
        var date2 = dateData[xmax];

        $('dateRange').update(dateData[xmin] + ' - ' + dateData[xmax]);

    });
});
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号