最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

回调和模块导出有什么区别?

IT培训 admin 8浏览 0评论

回调和模块导出有什么区别?

我在javascript中看到过一篇关于回调的文章。 。但是,在研究node.js中的模块导出时,我对回调感到困惑

回调 - A callback is a function that is to be executed after another function has finished executing

javascript回调

function doHomework(subject, callback) {
  console.log(`Starting my ${subject} homework.`);
  callback();
}

doHomework('math', function() {
  console.log('Finished my homework');
});

node.js中的模块导出

//app.就是

const logger = require('./logger');

logger.log(10, 10);

//logger.就是

const multiply = require('./multiplication');

function log(valueOne, valueTwo) {
  multiply('The result is ', valueOne, valueTwo);
}

module.exports.log = log;

//

function multiply(speech, valueOne, valueTwo) {
  let result = valueOne * valueTwo;

  return console.log(speech + result);
}

module.exports = multiply;

并在我的终端上运行node app.js

我从运行node app.js得到的结果是The result is 100,这是正确的。

但我的问题是Does the approach that I did on the node app is consider as callback as well?

回答如下:

回调 - 回调是在另一个函数完成执行后执行的函数

这不是“回调”的正确定义。除非这个定义有重要的警告,你没有引用,我不会继续使用你从中得到的任何资源。

一个相当广泛的回调定义是:

  • 回调函数是一个函数,它传递给其他函数(作为函数参数,属性值等),当其定义的调用函数的条件满足时,另一个函数将调用。

有些人可能会争论一个较窄的定义:

  • 回调是一个函数,您传递给另一个函数,以便在满足其定义的条件时回调另一个函数。

回调示例:

  1. DOM事件处理程序,虽然我们通常称它们为“处理程序”而不是回调。 (广义定义。)
  2. 传递给Array.prototype.sort以比较数组元素的函数。 (广泛和狭义的定义。)
  3. 您传递给new Promise以启动promise将观察的异步操作的函数(称为“promise executor function”)。 (广泛和狭义的定义。)
  4. 传递给Array.prototype.map以转换元素的函数。 (广泛和狭义的定义。)
  5. 您传递给promise的thencatchfinally方法的函数。
  6. 传递给fs.openFile的函数,当文件打开(或操作失败)时,Node.js将调用该函数。 (广泛和狭义的定义。)

......还有很多其他人。

请注意,在调用它们的函数完成执行之前,会调用其中许多(2,3和4)。

我在节点应用程序上执行的方法是否也被视为回调?

不。虽然你在multiply中使用log,但它只是你从log调用的函数,而不是回调函数。这将是一个回调:

function multiply(a, b, cb) {
    cb(a * b);
}
function showResult(msg) {
    console.log(msg);
}

multiply(7, 6, showResult);

回调和模块导出有什么区别?

我在javascript中看到过一篇关于回调的文章。 。但是,在研究node.js中的模块导出时,我对回调感到困惑

回调 - A callback is a function that is to be executed after another function has finished executing

javascript回调

function doHomework(subject, callback) {
  console.log(`Starting my ${subject} homework.`);
  callback();
}

doHomework('math', function() {
  console.log('Finished my homework');
});

node.js中的模块导出

//app.就是

const logger = require('./logger');

logger.log(10, 10);

//logger.就是

const multiply = require('./multiplication');

function log(valueOne, valueTwo) {
  multiply('The result is ', valueOne, valueTwo);
}

module.exports.log = log;

//

function multiply(speech, valueOne, valueTwo) {
  let result = valueOne * valueTwo;

  return console.log(speech + result);
}

module.exports = multiply;

并在我的终端上运行node app.js

我从运行node app.js得到的结果是The result is 100,这是正确的。

但我的问题是Does the approach that I did on the node app is consider as callback as well?

回答如下:

回调 - 回调是在另一个函数完成执行后执行的函数

这不是“回调”的正确定义。除非这个定义有重要的警告,你没有引用,我不会继续使用你从中得到的任何资源。

一个相当广泛的回调定义是:

  • 回调函数是一个函数,它传递给其他函数(作为函数参数,属性值等),当其定义的调用函数的条件满足时,另一个函数将调用。

有些人可能会争论一个较窄的定义:

  • 回调是一个函数,您传递给另一个函数,以便在满足其定义的条件时回调另一个函数。

回调示例:

  1. DOM事件处理程序,虽然我们通常称它们为“处理程序”而不是回调。 (广义定义。)
  2. 传递给Array.prototype.sort以比较数组元素的函数。 (广泛和狭义的定义。)
  3. 您传递给new Promise以启动promise将观察的异步操作的函数(称为“promise executor function”)。 (广泛和狭义的定义。)
  4. 传递给Array.prototype.map以转换元素的函数。 (广泛和狭义的定义。)
  5. 您传递给promise的thencatchfinally方法的函数。
  6. 传递给fs.openFile的函数,当文件打开(或操作失败)时,Node.js将调用该函数。 (广泛和狭义的定义。)

......还有很多其他人。

请注意,在调用它们的函数完成执行之前,会调用其中许多(2,3和4)。

我在节点应用程序上执行的方法是否也被视为回调?

不。虽然你在multiply中使用log,但它只是你从log调用的函数,而不是回调函数。这将是一个回调:

function multiply(a, b, cb) {
    cb(a * b);
}
function showResult(msg) {
    console.log(msg);
}

multiply(7, 6, showResult);

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论