function get_klout(screenName) {
klout.getKloutIdentity(screenName, function(error, klout_user) {
klout.getUserScore(klout_user.id, function(error, klout_response) {
return Math.round(klout_response.score);
});
});
}
您的函数是异步的,因此您不能将它返回的内容分配给变量,因为您只会分配未定义的:
var result = get_klout('foo'); // undefined
你可以做的是:
- 使用
async functions
在node 8+
- 使用
Promises
- 使用
callbacks
:
function get_klout(screenName, done) {
klout.getKloutIdentity(screenName, function(error, klout_user) {
klout.getUserScore(klout_user.id, function(error, klout_response) {
done(Math.round(klout_response.score));
});
});
}
get_klout('foo', function(response) {
console.log(response);
});
请注意:在节点中是实现的常见模式error first callback
,您应该看看它,因为它是处理错误的传统且更常用的方法:http:
//fredkschott.com/post/2014/03/understanding-error-第一个回调-in-node-js/