2016-10-09 4 views
1

Ich experimentiere mit NodeJS und der Twitter-API. Ich brauche Hilfe mit einem Versprechen. Die Funktion requestFollowers sollte ein Versprechen zurückgeben und es tut es. Wenn ich die Datei im Knoten cli ausführe, wird die Verarbeitung angezeigt und der Wert wird nie protokolliert. Wie bekomme ich den Wert, den ich von ihm erwarte oder wie löse ich es?Ich kann mit Twitter API kein Versprechen bekommen.

Hier ist, was ich so habe.

function requestFollowers(tweep) { 
 
    return new Promise(function(resolve, reject) { 
 
    twitter.get('followers/list', { 
 
     count: 200, 
 
     skip_status: true, 
 
     screen_name: tweep 
 
    }, function(error, followers) { 
 
     if (error) { 
 
     console.log('followers list/ error >', error); 
 
     reject(error); 
 
     } else { 
 
     resolve(followers.users.map(thing => thing.screen_name)); 
 
     } 
 
    }); 
 
    }); 
 
} 
 

 
function onMention(error, tweets) { 
 
    if (error) { 
 
    console.log('mentions_timeline/ error >', error); 
 
    } else { 
 
    //console.log('mentions_timeline/ tweets >', tweets); 
 
    let mentioned = tweets[0].entities.user_mentions 
 
     .filter(thing => thing.screen_name !== user.screen_name) 
 
     .map(thing => thing.screen_name); 
 

 
    var list1 = requestFollowers(mentioned[0]), 
 
     list2 = requestFollowers(tweets[0].user.screen_name); 
 

 
    console.log('list1 >', list1.then(val => val).catch(error => error)); 
 
    console.log('list2 >', list2.then(val => val).catch(error => error)); 
 
    } 
 
} 
 

 
var config = require('./config'), 
 
    Twitter = require('twitter'), 
 
    twitter = new Twitter(config), 
 
    user = { 
 
    screen_name: 'screen_name' 
 
    }, 
 
    /** @param {string} status */ 
 
    getStatus = status => ({ 
 
    status 
 
    }); 
 

 

 
twitter.get('statuses/mentions_timeline', user, onMention);

Antwort

1

können Sie diese Zeile console.log('list1 >', list1.then(val => val).catch(error => error)); um so etwas wie

ändern
list1.then(console.log).catch(console.error); 

Was Sie hatte, ist ein ungelöstes Versprechen Kette log und log vorbei nicht Versprechungen für Argumente lösen, bevor Drucken sie - es ist synchron. Auch Ihre then(val => val) ist redundant, auch wenn das irgendwie funktionieren würde - Sie brauchen keine andere Funktion, die nur ihre Eingabe zurückgibt.

+0

JA! Danke für die richtige Antwort. – colecmc