HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavascriptMinor

Loading and displaying JSON quickly in PhoneGap app

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
quicklyappphonegapjsondisplayingloadingand

Problem

I have this tap event in an iOS app that I'm developing with PhoneGap. When I click on the left arrow, it finds the desired content and retrieves it from a JSON file. It then displays those results on the screen.

How can I improve this? There's a bit of lag... I know that some of the lag is attributed to the 300ms delay (which fastclick.js and other libraries could resolve), but what else can I do to restructure this code and make it more snappy? I need it to respond quickly.

// PREVIOUS DAYS
    $('.left-arrow').on("tap", function() {
        dateArrayIndex--;
        todaysDate = morehShiur[dateArrayIndex]['date'];
        todaysContent = morehShiur[dateArrayIndex]['description'];
        $('.date').text(todaysDate);
        var path = window.location.href.replace('index.html', '');
        $.getJSON(path + "data/heb-text/" + todaysContent, function(data) {
            $('.title').empty();
            $('ol').empty();
            $('.title').append(data['title']);
            for (var i = 0; i ' + data.content[i]['content'] + '');
            }
            $("html, body").animate({ scrollTop: 0 }, 0);
        });
    });

Solution

Although I doubt it will make a big difference and help you much,
but it would be more efficient to move operations out of the function whose input and output never change. Such as these:

  • var path = window.location.href.replace('index.html', '');



  • path + "data/heb-text/"



No need to execute these every time a tap is fired.
You could execute these once, save the result in a variable,
and use those variables inside the tap handler.

If the document structure doesn't change,
then you could save processing time by caching these dom lookups too:

  • $('.date')



  • $('.title')



  • $('ol')



  • $("html, body")



Again, this might not make a big difference, but perhaps worth a shot anyway.

Context

StackExchange Code Review Q#72270, answer score: 2

Revisions (0)

No revisions yet.