函数 nodejs 中的函数
functions in functions nodejs
我想使用屏幕名称 (twitter) 获取 klout 分数。
我做到了。我知道它不是那样工作的,但我不知道它应该如何工作。
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);
});
});
}
我希望我的函数return这个数字Math.round(klout_response.score);
因为这是一个异步函数,您不能使用 return,以便 return 将异步代码的结果传递给您的函数回调并 return 回调的结果。您应该处理回调中的错误。
function get_klout(screenName, callback){
klout.getKloutIdentity(screenName, function(error, klout_user) {
if (err){
callback(error);
return
}
klout.getUserScore(klout_user.id, function(error, klout_response) {
if (err){
callback(error);
return
}
callback(null, klout_response.score);
});
});
}
get_klout(screenName, function(err, res){
if (err){
console.log(err);
return
}
console.log(res);
});
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);
});
});
}
你的函数是异步的,所以你不能只将它 returns 分配给一个变量,因为你只会分配未定义的:
var result = get_klout('foo'); // undefined
您可以做的是:
- 在
node 8+
中使用async functions
- 使用
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);
});
请注意:
在 node 中是实现 error first callback
的常见模式,您应该看看它,因为它是处理错误的传统且更常用的方法:
http://fredkschott.com/post/2014/03/understanding-error-first-callbacks-in-node-js/
我想使用屏幕名称 (twitter) 获取 klout 分数。
我做到了。我知道它不是那样工作的,但我不知道它应该如何工作。
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);
});
});
}
我希望我的函数return这个数字Math.round(klout_response.score);
因为这是一个异步函数,您不能使用 return,以便 return 将异步代码的结果传递给您的函数回调并 return 回调的结果。您应该处理回调中的错误。
function get_klout(screenName, callback){
klout.getKloutIdentity(screenName, function(error, klout_user) {
if (err){
callback(error);
return
}
klout.getUserScore(klout_user.id, function(error, klout_response) {
if (err){
callback(error);
return
}
callback(null, klout_response.score);
});
});
}
get_klout(screenName, function(err, res){
if (err){
console.log(err);
return
}
console.log(res);
});
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);
});
});
}
你的函数是异步的,所以你不能只将它 returns 分配给一个变量,因为你只会分配未定义的:
var result = get_klout('foo'); // undefined
您可以做的是:
- 在
node 8+
中使用 - 使用
Promises
- 使用
callbacks
:
async functions
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);
});
请注意:
在 node 中是实现 error first callback
的常见模式,您应该看看它,因为它是处理错误的传统且更常用的方法:
http://fredkschott.com/post/2014/03/understanding-error-first-callbacks-in-node-js/