Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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 如何调用回调函数?_Javascript_Node.js_Function_Asynchronous_Callback - Fatal编程技术网

Javascript 如何调用回调函数?

Javascript 如何调用回调函数?,javascript,node.js,function,asynchronous,callback,Javascript,Node.js,Function,Asynchronous,Callback,这是一个示例,我们使用异步Javascript模拟检索Github用户存储库的提交列表 getUser(1, (user)=>{ getRepositories(user.githubUsername, (repos)=>{ getCommits(repo , (commits)=>{ // This is callback hell\ }); }); }); function getCommits(re

这是一个示例,我们使用异步Javascript模拟检索Github用户存储库的提交列表

getUser(1, (user)=>{
    getRepositories(user.githubUsername, (repos)=>{
        getCommits(repo , (commits)=>{
            // This is callback hell\
        });
    });
});

function getCommits(repo){
    return ['commit1','commit2'];
    }

function getRepositories(username, callback){
    setTimeout(()=>{
        //Just for simulation
        console.log('Retrieving repos');
        return ['repo1','repo2'];
        },2000);

function getUser(id,callback){
    setTimeout(()=>{
        console.log('Reading user from database');
        callback({id: id, githubUsername: 'myName'});
        },2000)
}

我想打印每个存储库的提交数量(为了简单起见,只需提交1和提交2)。。。我知道如何同步实现这一点。。。但是这个实现异步执行是否正确?调用getUser()时。。。之后执行什么?lambda函数还是实际函数?

您已经测试过了吗?若否,原因为何?如果是,为什么会有这些问题?不太清楚你在问什么,但是你的代码的明显问题是
getRepositories
没有调用
callback
,并且
getCommits
被传递了一个回调,但没有定义相应的参数,也没有调用它。我只是尝试了一下。getCommits()从未被调用。。。我不知道为什么我很难理解嵌套结构。我不知道是先执行外部函数还是先执行内部函数