обратный вызов не является функцией для асинхронных операций, использующих nodejs - PullRequest
0 голосов
/ 05 мая 2018

index.js:

console.log('Before');
getUser(1, getRepositories);
console.log('After');

function getRepositories(user) {
    getRepositories(user.gitHubUsername, getCommits);
}

function getCommits(repos) {
    getCommits(repo, displayCommits);
}

function displayCommits(commits) {
    console.log(commits);
}

function getCommits(repo,callback) {
    setTimeout(() => {
        console.log('Getting commits for a GitHub repo...');
        callback(['commit1', 'commit2', 'commit3']);
    }, 2000)
}

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

function getRepositories(username, callback) {
    setTimeout(() => {
        console.log('Calling GitHub API...');
        callback(['repo1', 'repo2', 'repo3']);
    }, 2000);
}

Я перешел на путь, содержащий файл, выполнил команду: node index.js и получил ошибку: обратный вызов не является функцией.

Кто-нибудь может подсказать мне здесь, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 06 мая 2018

Вот обновленный код с исправлением:

index.js:

console.log('Before');
getUser(1, getRepositorie);
console.log('After');

function getRepositorie(user) {
    getRepositories(user.gitHubUsername, getCommit);
}

function getCommit(repos) {
    getCommits(repos[0], displayCommits);
}

function displayCommits(commits) {
    console.log(commits);
}

function getCommits(repo,callback) {
    setTimeout(() => {
        console.log('Getting commits for a GitHub repo...');
        callback(['commit1', 'commit2', 'commit3']);
    }, 2000)
}

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

function getRepositories(username, callback) {
    setTimeout(() => {
        console.log('Calling GitHub API...');
        callback(['repo1', 'repo2', 'repo3']);
    }, 2000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...