gpt4 book ai didi

node.js - Node js : getting error "listener must be a function"

转载 作者:搜寻专家 更新时间:2023-11-01 00:43:25 25 4
gpt4 key购买 nike

我有这段代码:

function myfunction(url_parts){
fs.unlink(__dirname + '/temp/' + url_parts + '.pdf', function(err){
if (err) console.log(err);
console.log('unlink ok');
});
}
var url_parts= 'filename'
req.on("close", myfunction(url_parts));

我得到错误“listener must be a function”。但是 myfunction 是一个函数 :D 怎么了??如果我不将任何参数传递给 myfunction,我不会收到此错误,但我需要传递 url_parts。我不能使用匿名函数,因为我需要在代码的另一部分调用 removeListener 方法。

req.removeListener('close', myfunction);

最佳答案

你应该使用 bind函数(分配给 Function.prototype)。您的代码将变为(仅更改最后一行)

function myfunction(url_parts){
fs.unlink(__dirname + '/temp/' + url_parts + '.pdf', function(err){
if (err) console.log(err);
console.log('unlink ok');
});
}
var url_parts= 'filename'
req.on("close", myfunction.bind(null, url_parts));

bind 函数允许您创建一个新函数,它将在以后每次调用 bind 时将您定义的参数传递给该函数。

要稍后删除事件,您应该删除绑定(bind)调用的结果,而不是原始函数。

关于node.js - Node js : getting error "listener must be a function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26929798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com