Bookmark and share:
Bookmark with delicious tweet this site Post to Google Buzz! Post to Facebook Share on FriendFeed Stumble! this site

RGraph: HTML5 canvas graph library - Asynchronous processing

Waiting for onload event...

These images are here to pad the page and slow down loading so that the window.onload event is slowed. This makes the difference far more visible.

[No canvas support]

Asynchronous processing can speed up the display of your graphs, because the browser gets to your code, sets it going and then continues on rendering the page. Particularly if you have a weighty page, it can make quite a difference. The RGraph.Async() function itself is very simple, but because it can make a significant difference to the speed of your page, it is documented here. There's an example of it to the right. One thing to remember is to ensure your canvas tag is defined first before you set the function that creates the graph going.

Although asynchronous processing can speed up your pages, it can also give the appearance of slower pages due to partial rendering, (ie your pages render a bit at a time). You therefore will need to experiment to get the best result for you.


<script src="RGraph.common.js"></script>
<script src="RGraph.line.js"></script>

<canvas id="myCanvas" width="300" height="100">[No canvas support]</canvas>

<script>
    /**
    * Create the line graph
    */
    function CreateLineGraph ()
    {
        var line = new RGraph.Line('myCanvas', [1,2,4,2,1,3,5,6,6,5,3,5]);
        line.Set('chart.title', 'Sales for Acme Inc.');
        line.Set('chart.labels', ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']);
        line.Set('chart.hmargin', 10);
        line.Set('chart.linewidth', 5);
        line.Set('chart.shadow', true);
        line.Set('chart.shadow.offsetx', 0);
        line.Set('chart.shadow.offsety', 0);
        line.Set('chart.shadow.blur', 15);
        line.Draw();
    }

    RGraph.Async(CreateLineGraph);
</script>

Things to remember

See also

You might also be interested in the alternative, DOMContentLoaded event.