Code Review Stack Exchange is a question and answer site for peer programmer code reviews. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

When an API has a 'next' feature, I use the following pattern to obtain all the results:

/** Obtains a list of channels followed by a user */
function get_follows(username, callback) {
    var channels = [];
    function handler(data) {
        if (!data || data.follows.length == 0) {
        for (var i = 0; i < data.follows.length; i++)
        JSON.load(, handler);
    var url = ""+username+"/follows/channels?limit=75&offset=0&on_site=1";
    JSON.load(url, handler);

Is there a better way to go about this?

share|improve this question
up vote 5 down vote accepted

I like your code, and would use it myself, some thoughts:

  • I assume you declare url next to JSON.load because you want to declare it close to where you use it. I would still recommend using 1 comma separated list of variables on the top.

  • lowerCamelCase is good for you, get_follows -> getFollows -> getFollowedChannels ?

  • Comparing to 0 should be done with ===, if you do it for the length of an array I would go with a falsey comparison: if (!data || !data.follows.length) {

From a design perspective, you are circumventing the paging system, are you sure you always need every single channel? I hope you at least cache the retrieved information.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.