javascript - Code only works if I alert out before the code that's bombing out? -


this freakin weird me. if don't

    function bindalbumandphotodata()     {         // array of user's albums         var aalbums = getallalbums(userid, token);          alert("aalbums: " + aalbums);         if (aalbums == null || aalbums == "undefined")             return;          // set default albumid         var defaultalbumid = aalbums[0].id;      }; 

so undefined error on line var defaultalbumid = aalbums[0].id; if don't uncomment alert("aalbums: " + aalbums);

what heck? if comment out alert("aalbums: " + aalbums); undefined var defaultalbumid = aalbums[0].id;

this weird. i've been working night figure out why kept getting undefined aalbum[0] , add alert used have above it, fine...makes no sense me.

here's full code of getallalbums:

function getallalbums(userid, accesstoken) {     var aalbums = []; // array     var uri = "/" + userid + "/albums?access_token=" + accesstoken;      alert("uri: " + uri);      fb.api(uri, function (response)      {         // check valid response         if (!response || response.error)          {             alert("error occured");             return;         }          (var = 0, l = response.data.length; < l; i++)          {             alert("album #: " + + "\r\n" +                   "response.data[i].id: " + response.data[i].id + "\r\n" +                   "response.data[i].name: " + response.data[i].name + "\r\n" +                   "response.data[i].count: " + response.data[i].count + "\r\n" +                   "response.data[i].link: " + response.data[i].link                   );              aalbums[i] = new album(                                                     response.data[i].id,                                                     response.data[i].name,                                                     response.data[i].count,                                                     response.data[i].link                                                    );              alert("aalbums[" + + "].id : " + aalbums[i].id);         }     });      return aalbums; } 

so i'm not returning array until hit callback of fb.api async call don't see how defaultalbumid = aalbums[0].id; line of code executing before have valid array of data back. when put in alert, ovbvioulsly it's delaying before hits line defaultalbumid = aalbums[0].id; causing guess luckily have data beacuse async fb.api call done again don't see how that's possible have issue when i'm waiting call before proceeding on , returning array aalbums in bindalbumandphotodata() method.

update #3

            function bindalbumandphotodata()             {                 getallalbums(userid, accesstoken, function (aalbums)                  {                     alert("we're , should have data");                      if (aalbums === null || aalbums === undefined) {                         alert("array empty");                         return false;                     }                      var defaultalbumid = aalbums[0].id;                      // set default albumid                     var defaultalbumid = aalbums[0].id;                      // bind album dropdown                     alert(" defaultalbumid: " + defaultalbumid);                   });             };   function getallalbums(userid, accesstoken, callbackfunctionsuccess) {     var aalbums = []; // array     var uri = "/" + userid + "/albums?access_token=" + accesstoken;      fb.api(uri, function (response)      {         // check valid response         if (!response || response.error)          {             alert("error occured");             return;         }          (var = 0, l = response.data.length; < l; i++)          {             alert("album #: " + + "\r\n" +                   "response.data[i].id: " + response.data[i].id + "\r\n" +                   "response.data[i].name: " + response.data[i].name + "\r\n" +                   "response.data[i].count: " + response.data[i].count + "\r\n" +                   "response.data[i].link: " + response.data[i].link                   );              aalbums[i] = new album(                                                     response.data[i].id,                                                     response.data[i].name,                                                     response.data[i].count,                                                     response.data[i].link                                                    );              alert("aalbums[" + + "].id : " + aalbums[i].id);         }          // pass array callback function sent param getallalbums method here         callbackfunctionsuccess(aalbums);      }); } 

it's not hitting alert in callback. must still doing wrong here.

update #4 - reason it's not hitting fb.api callback now.

function getallalbums(userid, accesstoken, callbackfunctionsuccess) {     var aalbums = []; // array     var uri = "/" + userid + "/albums?access_token=" + accesstoken;      alert("uri: " + uri);      fb.api(uri, function (response)      {         // check valid response         if (!response || response.error)          {             alert("error occured");             return;         }          (var = 0, l = response.data.length; < l; i++) {             alert("album #: " + + "\r\n" +                   "response.data[i].id: " + response.data[i].id + "\r\n" +                   "response.data[i].name: " + response.data[i].name + "\r\n" +                   "response.data[i].count: " + response.data[i].count + "\r\n" +                   "response.data[i].link: " + response.data[i].link                   );              aalbums[i] = new album(                                                     response.data[i].id,                                                     response.data[i].name,                                                     response.data[i].count,                                                     response.data[i].link                                                    );              alert("aalbums[" + + "].id : " + aalbums[i].id);         }          alert("about pass array callback function");         // pass array callback function sent param getallalbums method here         callbackfunctionsuccess(aalbums);     }); } 

function bindalbumandphotodata() {     // array of user's albums     getallalbums(userid, token, function(aalbums){          // set default albumid         var defaultalbumid = aalbums[0].id;      });  }; 

and in getallalbums function call success function when have data back

//********* after break *******//

in response updated question: fb api asynchronous, , keep executing other code while waits. using code, have done passed in function, , call function you've passed @ end

function getallalbums(userid, accesstoken, funcsuccess) {     var aalbums = []; // array     var uri = "/" + userid + "/albums?access_token=" + accesstoken;  alert("uri: " + uri);  fb.api(uri, function (response)  {     // check valid response     if (!response || response.error)      {         alert("error occured");         return;     }      (var = 0, l = response.data.length; < l; i++)      {         alert("album #: " + + "\r\n" +               "response.data[i].id: " + response.data[i].id + "\r\n" +               "response.data[i].name: " + response.data[i].name + "\r\n" +               "response.data[i].count: " + response.data[i].count + "\r\n" +               "response.data[i].link: " + response.data[i].link               );          aalbums[i] = new album(                                                 response.data[i].id,                                                 response.data[i].name,                                                 response.data[i].count,                                                 response.data[i].link                                                );          alert("aalbums[" + + "].id : " + aalbums[i].id);        }      funcsuccess(aalbums); }); 

}


Comments

Popular posts from this blog

c++ - How do I get a multi line tooltip in MFC -

asp.net - In javascript how to find the height and width -

c# - DataTable to EnumerableRowCollection -