我正在尝试创建一个简单的方法,在控制台中以美化的格式记录我的数据库操作结果。我想在我的数据库完成操作时将一个额外的变量 (operationName
) 传递给我的自定义记录器回调函数。
// Custom logger (simplified)
const dbLogger = (error, data, operationName) => {
if (error) {
console.log(`${operationName} failed`, error)
}
console.log(`${operationName} success`, data)
}
// mongodb operations
import ChatModel from 'somewhere';
function createMessage() {
const newChatAdded = new ChatModel({
message: 'Hi'
})
ChatModel.save(newChatAdded, dbLogger);
}
我们回调中的错误和数据是由ChatModel.save
方法提供的,但我想发送第三个参数operationName(例如“保存”或“删除”)。
最佳答案
两种方式,任君选择!
使用带有 rest parameter 的匿名函数和 spread这些在调用
dbLogger
时:ChatModel.save(newChatAdded, (...args) => dbLogger(...args, "save");
使用 bound function :
更改您的
dbLogger
函数签名以接受operationName
作为第一个参数:const dbLogger = (operationName, error, data) => { if (error) { console.log(`${operationName} failed`, error) } console.log(`${operationName} success`, data) }
创建新的绑定(bind)日志函数,该函数将始终以“save”作为第一个参数调用。
ChatModel.save(newChatAdded, dbLogger.bind(null, "save");
这也称为 "partial application" .
关于javascript - 将额外变量传递给回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56254292/