如何在module.exports参数内创建回调函数。 我正在尝试做以下类似的事情,我想知道如何实现回调函数。
module.js
SELECT a.id, a.Nickname, COUNT(c.Author) as num_content
FROM Authors a LEFT JOIN
Content c
ON c.Author = a.id
GROUP BY a.id, a.Nickname
ORDER BY num_content ASC;
app.js
module.exports = (a, b, callback) => {
let sum = a+b
let error = null
//callback
}
答案 0 :(得分:3)
在模块中。导出需要“调用”回调函数。 像这样
// Get the values from the table
lua_getfield(L, 2, "Value1");
lua_getfield(L, 2, "Value2");
lua_getfield(L, 2, "Value3");
const char *value_3 = luaL_checkstring(L, -1);
const char *value_2 = luaL_checkstring(L, -2);
const char *value_1 = luaL_checkstring(L, -3);
这会将控件返回给app.js callback(error, sum)
函数。
您可以在此处实现回调函数。即您要如何处理收到的结果。
您的代码如下所示:-
module.js
add()
app.js
module.exports = (a, b, callback) => {
let sum = a+b
let error = null
callback(error, sum) // invoke the callback function
}
答案 1 :(得分:1)
您已将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')
答案 2 :(得分:1)
add.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);
};
app.js
const add = require('./add');
add(1, 2, (err, result) => {
if (err) {
console.log(err);
}
console.log(result);
});
在这里,我们将错误作为第一个参数,将实际总和作为第二个参数传递给回调函数。假设我们传递的是字符串而不是数字,那么第一个参数将包含错误对象,结果将为null。
干杯。