【问题标题】:Can't modify a function to print the content of another function不能修改一个函数来打印另一个函数的内容
【发布时间】:2019-04-09 13:50:28
【问题描述】:

我在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();

【问题讨论】:

  • 你想打印 addGender 的内容 -> {name,title,gender}?
  • 是的,你是@naga - elixir - jar 。

标签: node.js function callback


【解决方案1】:

如果你不在函数中使用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();

【讨论】:

  • 完美@尼尔!!我非常感谢您的解决方案。
  • 没问题@MITHU,很高兴我能帮上忙。只是好奇,这两种解决方案中的哪一种是您所追求的?
  • 老实说,它们中的任何一个都是理想的。谢谢。
  • 如果您查看this post 以提供任何解决方案@Neil,我将非常高兴。
猜你喜欢
  • 2012-06-05
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 2022-11-21
  • 1970-01-01
相关资源
最近更新 更多