在节点 js 模块中创建回调



如何在 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。

干杯。

最新更新