While-Schleife in Javascript mit Callback
Ich versuche zu schreiben, der Pseudocode, die hier gegeben https://dev.twitter.com/docs/misc/cursoring mit javascript und node-oauth https://github.com/ciaranj/node-oauth. Allerdings fürchte ich mich wegen der Art der callback-Funktionen der cursor wird nie zugewiesen next_cursor und die Schleife läuft ewig. Kann jemand, dass eine Abhilfe für dieses?
module.exports.getFriends = function (user ,oa ,cb){
var friendsObject = {};
var cursor = -1 ;
while(cursor != 0){
console.log(cursor);
oa.get(
'https://api.twitter.com/1.1/friends/list.json?cursor=' + cursor + '&skip_status=true&include_user_entities=false'
,user.token //test user token
,user.tokenSecret, //test user secret
function (e, data, res){
if (e) console.error(e);
cursor = JSON.parse(data).next_cursor;
JSON.parse(data).users.forEach(function(user){
var name = user.name;
friendsObject[name + ""] = {twitterHandle : "@" + user.name, profilePic: user.profile_image_url};
});
console.log(friendsObject);
}
);
}
}
- Suche in diesem Augenblick.. geekabyte.blogspot.com/2013/04/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angenommen, Ihr code ist verpackt in eine Funktion, ich nenne es
getFriends
, im Grunde ist es umschließt alles, was innerhalb der Schleife.In nodejs alle io wird asynchron erfolgen, so dass Sie loop-viel mehr als nötig, bevor Sie tatsächlich ändern
cursor
, was Sie brauchen, ist die Schleife nur, wenn Sie eine Antwort erhalten aus der Twitter-API, die man tun könnte etwas wie diese:Starten Sie es durch aufrufen
loop(-1)
natürlich ist dies nur eine Weise, es zu tun.Wenn Euch das lieber ist, könnte die Verwendung einer externen Bibliothek, wie async.
Empfehle ich die Verwendung async für diese. Es ist für Situationen wie die Ihre und Griffe, Parallelität und die Ausführung für Sie. Sie werden einfach am Ende etwas zu schreiben, dass macht das gleiche wie async, nur Ihre wird nicht so getestet.