Не удается изменить функцию для печати содержимого другой функции - PullRequest
0 голосов
/ 09 апреля 2019

Я написал скрипт на node с использованием трех различных функций, обеспечивающих обратный вызов внутри них.

Как изменить функцию printResult(), сохранив дизайн таким, какой он есть, для печати содержимого в функции addGender()?

Вот что я написал:

const name = "sam"

function getName(callback) {
  callback(name);
}

function addTitle(name,callback) {
  var title = "writer";
  callback(name,title);
}

function addGender(name,title,callback) {
  var gender = "male";
  console.log({name,title,gender});
}

printResult();

1 Ответ

1 голос
/ 09 апреля 2019

Почему addGender имеет callback, если вы не используете его в функции?

Это работает без изменения какой-либо из перечисленных функций.

const name = "sam"

function getName(callback) {
  callback(name);
}

function addTitle(name,callback) {
  var title = "writer";
  callback(name,title);
}

function addGender(name,title,callback) {
  var gender = "male";
  console.log({name,title,gender});
}

function printResult() {
  getName(function(name) {
    addTitle(name, function(name, title) {
      addGender(name, title)
    })
  })
}

printResult();

Вот модифицированная версия, где addGender использует callback

const name = "sam"

function getName(callback) {
  callback(name);
}

function addTitle(name,callback) {
  var title = "writer";
  callback(name,title);
}

function addGender(name,title,callback) {
  var gender = "male";
  callback({name,title,gender})
}

function printResult() {
  getName(function(name) {
    addTitle(name, function(name, title) {
      addGender(name, title, function(result) {
        console.log(result)
      })
    })
  })
}

printResult();
...