javascript - 将附加参数传递给 Javascript 回调函数

标签 javascript node.js callback

<分区>

我需要监视 Node.JS 应用程序中的少量目录:

function updated(event, filename){
    log("CHANGED\t/share/channels/" + filename);
}
for(i in channels)
    fs.watch('share/channels/' + channels[i], {persistent: false}, updated);

问题是 fs.watch 只将文件名传递给回调函数,而不包括它所在的目录。有没有办法我可以以某种方式将额外参数传递给 updated() 函数,以便它知道文件在哪里是吗?

我想我正在寻找类似于 Python 的 functools.partial 的东西,如果有帮助的话。

最佳答案

使用 JS 绑定(bind)的示例

文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

提示,绑定(bind)参数出现在调用时参数之前。

my_hello = 'Hello!'
my_world = {
    'antartica': 'cold',
}

anonymous_callback = function (injected1, injected2, param1, param2) {
    param1 = param1 ? param1 : 'One';
    param2 = param2 ? param2 : 'Two';

    console.log('param1: (' + typeof(param1) + ') ' + param1)
    console.log('param2: (' + typeof(param2) + ') ' + param2)

    console.log('injected1: (' + typeof(injected1) + ') ' + injected1)
    console.log('injected2: (' + typeof(injected2) + ') ' + injected2)
    console.log(injected2)
}.bind(this, my_hello, my_world)

anonymous_callback('Param 1', 'Param 2')

输出:

param1: (string) Param 1
param2: (string) Param 2
injected1: (string) Hello!
injected2: (object) [object Object]
{ antartica: 'cold' }

关于javascript - 将附加参数传递给 Javascript 回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371673/

相关文章:

javascript - Laravel 重定向不起作用

javascript - 如何将 ember 添加到 NodeJS 项目中?

javascript - 从生成器迁移到异步/等待

javascript - 将回调转换为 Promise 语法

javascript - 使用 Javascript 在选择框中执行算术计算

javascript - Grunt uglify - 替换原始文件

javascript - Node.js 请求模块全局事件

java - 当使用 CursorAdapter 的回调时,调用 initLoader() 仅有效一次

javascript - React 状态在回调函数的调用之间清空

javascript - dom 加载后包含外部脚本