假设我有一个方法发出POST
,然后调用适当的回调函数来处理响应:
myService.verify(id, verificationCallback);
function verificationCallback(err, response) { ... }
也许这个问题是双重的。似乎有2个隐式参数传递给verificationCallback
(这是这种情况吗?这是如何工作的?)
那么我如何能够将第三个参数传递给该回调?我会做点什么:
myService.verify(id, verificationCallback(err, response, someOtherArgument));
这会因为当前上下文中没有err
和response
变量而中断吗?我会使用arguments
对象访问这些变量吗?
可能的解决方案(?)
Using an anonymous function:
myService.verify(id, function(err, response) {
// Access my other variable here
someOtherArgument === ...
});
由于
答案 0 :(得分:1)
myService.verify(id, verificationCallback(err, response, someOtherArgument));
这不起作用。它会立即调用具有(很可能)未定义变量的函数。
参数不是隐式传递的,而是在验证函数内调用函数时显式传递的。见JonasW的anwer。
这是一个可能的解决方案:
function callback(yourThirdArgument) {
return function(err, response) {
...
}
}
用法:
myService.verify(id, callback(someOtherArgument));
答案 1 :(得分:1)
您可以使用.bind()
。将null附加到this
值,someOtherArgument
将作为回调的第一个参数传递。这是一个MDN链接,可获取更多信息。
const someOtherArgument = "";
// Use .bind() to attach an argument to your callback.
myService.verify(id, verificationCallback.bind(null, someOtherArgument));
function verificationCallback(someOtherArgument, err, response) { ... }
答案 2 :(得分:0)
我不会称之为隐式:
const myService = {
verify(id, cb){
//...
cb(null, "data"); // <----
}
};