javascript - 如何让一个函数只在某个函数完成后才执行?

标签 javascript prototypejs flotr

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

        }
}

在完成 drawchart(data) 方法之后,我只想执行以下代码 但不幸的是,函数 HumbleFinance.init 正在使用空数据进行调用。

请告诉我如何解决这个问题。 我无法将以下代码放入drawChart(data)函数中

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 = dateData[xmax];

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

});
});

最佳答案

您对 HumbleFinance.init() 的调用是在获得 ajax 响应并处理数据结果之前发生的。您需要确保在调用此init 之前处理您的ajax 响应。为此,您只需将 init 调用移至 onSuccess 回调中,位于 drawChart 方法调用之后。

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

    });
});

关于javascript - 如何让一个函数只在某个函数完成后才执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920096/

相关文章:

javascript - if/else 语句不调用函数?

javascript - 将鼠标悬停在 div 上会显示隐藏的 div - jquery 到原型(prototype)的转换

javascript - 如何检查元素是否在溢出区域?

javascript - 原型(prototype) JavaScript 日历,可自定义单元格渲染,如 YUI 日历

javascript - 如何绘制json数据

javascript - 使用 JS 更改 Meteor 中的按钮文本

javascript - 如何正确执行这个基于 promise 的 SQL 查询?

javascript - 如何补充脚本,以便通过在其外部单击来隐藏菜单?