问题实现回调函数

时间:2019-04-17 03:22:07

标签: javascript callback

我正在研究一系列旨在帮助理解回调函数的问题。我知道,如果在事件之后调用了一个函数,则会产生回调,但是我不确定在这种情况下该函数如何工作。

我有一个循环遍历传入数组并运行加密功能的循环。

const cipher = require('./cipher')

exports.encrypt = function(text, callback) {
  cipher.encrypt(text, callback)
}

exports.decrypt = function(text, callback) {
  cipher.decrypt(text, callback)
}

exports.encryptMultiple = function(textArray, callback) {
  // 1. For each string in the textArray call exports.encrypt to encrypt the string
  // 2. Each encrypt must be run in parallel
  // 3. If one encrypt fails then call the callback immediately with the error as the first parameter
  // 4. If all encrypts succeed then return an array of encrypted strings. They must be in the same order as received.

  //what I have so far
  let encrypted = []

  textArray.forEach(element => {
    encrypted.push(cipher.encrypt(element))
  });

}

期望的输出是加密值的数组。目前,我正在接收一个未定义每个元素的数组。

2 个答案:

答案 0 :(得分:0)

首先,您可能想在问题中提供更多背景信息。 其次,我相信您对回调有一些困惑。回调只是放置的函数,可以传递给将执行它们的其他函数。还有很多东西,但这是我能提供的最简单的解释。据我了解,如果有异常,您想执行回调。这可能就是您要寻找的。

try {
  //Execute your code here.
  cipher.encrypt(element);
}
catch(error) {
  callback();
}

答案 1 :(得分:0)

您好,您正在使用的密码npm不需要第二个参数take a look by clicking here!。 take a look at export here也不需要对同一文件中使用的功能使用导出。

代替

exports.encrypt = function(text, callback) {
  cipher.encrypt(text, callback)
}

exports.decrypt = function(text, callback) {
  cipher.decrypt(text, callback)
}

您可以简单地实现

encrypt = function(text){
 cipher.encrypt(text);
}

decrypt = function(text, callback) {
  cipher.decrypt(text);
}

并在forEach中调用这些函数。至于对回调的理解,请考虑以下示例

function doHomework(subject, callback) {
  alert(`Starting my ${subject} homework.`);
  callback();
}
function alertFinished(){
  alert('Finished my homework');
}
doHomework('math', alertFinished);

请参考click here