如何在 module.exports 参数中创建回调函数。 我正在尝试做如下所示的类似事情,我想知道如何实现回调函数。
模块.js
module.exports = (a, b, callback) => {
let sum = a+b
let error = null
//callback
}
应用.js
const add = require(./module.js)
add(1,2, (err, result) => {
}
在模块导出中,您需要"调用"回调函数。 这样
callback(error, sum)
这会将控件返回到 app.jsadd()
函数。 您在此处实现回调函数。即你想用你收到的结果做什么。
以下是您的代码的外观:-
模块.js
module.exports = (a, b, callback) => {
let sum = a+b
let error = null
callback(error, sum) // invoke the callback function
}
应用.js
const add = require("./module")
add(1,2, (err, result) => {
if(err) { // Best practice to handle your errors
console.log(err)
} else { // Implement the logic, what you want to do once you recieve the response back
console.log(result)
}
})
你已经为你的函数使用了sum;但我将使用除法,因为这样我就可以向你展示回调的错误。
您的导出将如下所示
module.exports = {
divide: (a,b,cb) => {
if (b === 0) {
cb('divide by zero', null);
} else {
cb(null, a/b);
}
}
}
和这样的导入
var func = require('./testExport').divide;
func(1,2,(err,res) => {
console.log(err,res);
});
func(1,0,(err,res) => {
console.log(err,res);
})
回调只是您从调用函数的位置发送的函数。在两个函数调用(在导入的位置(中,您会看到我们正在发送一个函数作为回调,该函数接受两个参数。
在导出的地方,我们调用相同的函数,第一个参数作为错误,第二个参数作为res。
如果要导入函数而不导入require().func
,则必须在default
中导出函数。
module.exports = (a,b,cb) => {
if (b === 0) {
cb('divide by zero', null);
} else {
cb(null, a/b);
}
}
并将其导入为
var defaultFunc = require('./testExport')
添加.js
module.exports = (a, b, callback) => {
if (typeof a !== 'number' || typeof b !== 'number') {
return callback(new Error('Invalid argument passed'), null);
}
let sum = a + b;
callback(null, sum);
};
应用.js
const add = require('./add');
add(1, 2, (err, result) => {
if (err) {
console.log(err);
}
console.log(result);
});
在这里,我们将错误作为第一个参数传递,将实际总和作为第二个参数传递给回调函数。假设我们传递一个字符串而不是数字,那么第一个参数将具有错误对象,结果将为 null。
干杯。