Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodejs回调don';我不明白回调结果是如何通过参数得到的_Javascript_Node.js - Fatal编程技术网

Javascript nodejs回调don';我不明白回调结果是如何通过参数得到的

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:

看到并运行下面的代码,我想我理解闭包。。。回调参数中的“avatarUrl”是如何在函数参数“avatar”中接收的。我知道这是常见的模式,只是还不能得到它

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我刚刚单击