Javascript 向回调函数传递更多参数

Javascript 向回调函数传递更多参数,javascript,express,Javascript,Express,假设我有一个方法,它发出一个POST,然后调用一个适当的回调函数来处理响应: myService.verify(id, verificationCallback); function verificationCallback(err, response) { ... } 也许这个问题有两个方面。似乎有两个隐式参数被传递到verificationCallback(是这样吗?这是如何工作的?) 那么,我怎样才能将第三个参数传递给回调呢?我会做一些类似于: myService.verify(id,

假设我有一个方法,它发出一个
POST
,然后调用一个适当的回调函数来处理响应:

myService.verify(id, verificationCallback);

function verificationCallback(err, response) { ... }
也许这个问题有两个方面。似乎有两个隐式参数被传递到
verificationCallback
(是这样吗?这是如何工作的?)

那么,我怎样才能将第三个参数传递给回调呢?我会做一些类似于:

myService.verify(id, verificationCallback(err, response, someOtherArgument));
因为当前上下文中没有
err
response
变量,所以会中断吗?我会使用
参数
对象访问这些变量吗

可能的解决方案(?)

Using an anonymous function:

myService.verify(id, function(err, response) {
    // Access my other variable here
    someOtherArgument === ...
});
谢谢

我不认为这是含蓄的:

const myService={
验证(id、cb){
//...
cb(空,“数据”);//
这将不起作用。它将立即使用(很可能)未定义的变量调用函数

参数不是隐式传递的,而是在验证函数中调用函数时显式传递的。请参阅JonasW的anwer

以下是一个可能的解决方案:

function callback(yourThirdArgument) {
    return function(err, response) {
       ...
    }
}
用法:

myService.verify(id, callback(someOtherArgument));
您可以使用
.bind()
。将null附加到
值,并且
其他参数
将作为第一个参数传递到回调。以下是有关详细信息的链接

const someOtherArgument = "";

// Use .bind() to attach an argument to your callback.
myService.verify(id, verificationCallback.bind(null, someOtherArgument));

function verificationCallback(someOtherArgument, err, response) { ... }
myService.verify(id, callback(someOtherArgument));
const someOtherArgument = "";

// Use .bind() to attach an argument to your callback.
myService.verify(id, verificationCallback.bind(null, someOtherArgument));

function verificationCallback(someOtherArgument, err, response) { ... }