Javascript nodejs回调don';我不明白回调结果是如何通过参数得到的
看到并运行下面的代码,我想我理解闭包。。。回调参数中的“avatarUrl”是如何在函数参数“avatar”中接收的。我知道这是常见的模式,只是还不能得到它Javascript nodejs回调don';我不明白回调结果是如何通过参数得到的,javascript,node.js,Javascript,Node.js,看到并运行下面的代码,我想我理解闭包。。。回调参数中的“avatarUrl”是如何在函数参数“avatar”中接收的。我知道这是常见的模式,只是还不能得到它 var GitHubApi = require('github'); var github = new GitHubApi({ version: '3.0.0' }); var getUserAvataWithCallback = function(user, callback) { github.search.users({q:
var GitHubApi = require('github');
var github = new GitHubApi({
version: '3.0.0'
});
var getUserAvataWithCallback = function(user, callback) {
github.search.users({q: user}, function(err,res) {
if (err) { callback(err, null);}
else {
var avatarUrl = res.items[0].avatar_url;
callback(null, avatarUrl);
}
});
};
getUserAvataWithCallback('irom77', function(err,avatar) {
console.log('got url with callback pattern', avatar);
})
传递给函数的参数名称不必是函数定义中的参数名称,定义中的参数是将在给定函数范围内初始化的变量名称。参数声明将接收在函数调用的第二个位置传递的值(根据您提供的代码),并且您将能够在具有该名称的范围内访问该值。你可以:
function foo(arg1, arg2) {
console.log(arg1, arg2);
}
foo(true, true); // will output true, true
foo(0, 1); //will output 0, 1
foo('shikaka', 1); //will output "shikaka", 1
var bar = "shikaka";
foo(bar, "shikaka"); //will output "shikaka", "shikaka"
因此,回调在javascript中是一个基本的、完整的概念,因此理解一些概念很重要。看看这个例子:
//这是“foo”的函数定义
//这里回调参数指的是
//函数调用中的第二个参数
//底部是一个函数
var foo=函数(arg,回调){
如果(参数%2!=0)
回调(“arg为奇数”,arg)
其他的
回调(空,arg)
}
//对foo的函数调用
foo(2,函数(err,num){
如果(错误)
console.log(错误)
其他的
console.log(num)
}
这是一个标准的函数调用:回调(null,avatarUrl);
这里没有[值得注意的]闭包。avatar
不是一个参数,它是回调函数的一个参数。所以这里没有闭包?getUserAvataWithCallback'closures'github.search.users()“?我理解区别,头像是参数,头像是参数,对吧。仍然不知道头像是如何被接收到头像中的,对不起..也许括号()让meWell困惑,函数(err,res){…}”
是回调
变量的闭包,是的,但这对调用来说并不重要。回调
指的是函数(err,avatar){…}
您传递到getUserAvataWithCallback
我得到了这个,但我理解函数是如何工作的。只是还不知道函数是如何包含在函数中的,突然参数/参数返回结果lol..sorryWow得到了,很好的例子我正在寻找thnx a lotThnx我刚刚单击