相关疑难解决方法(0)

将额外参数传递给回调函数

我有一个函数callWithMagic,它将一个回调函数作为参数,并用一个参数调用它.

const callWithMagic = callback => {
  const magic = getMagic();
  callback(magic);
};
Run Code Online (Sandbox Code Playgroud)

我还有一个函数processMagic,它有两个参数:magictheAnswer.

const processMagic = (magic, theAnswer) => {
  someOtherMagic();
};
Run Code Online (Sandbox Code Playgroud)

我想将函数processMagic作为参数传递给callWithMagic,但我也希望42将第二个参数传递theAnswerprocessMagic.我怎样才能做到这一点?

callWithMagic(<what should I put here?>);
Run Code Online (Sandbox Code Playgroud)

javascript parameters function callback

37
推荐指数
1
解决办法
2万
查看次数

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

我需要在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);
Run Code Online (Sandbox Code Playgroud)

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

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

javascript callback node.js

9
推荐指数
3
解决办法
2万
查看次数

Javascript:如何将参数传递给回调函数

我很难理解如何正确地将参数传递给回调函数而不立即调用该函数.

例如,这将按预期工作:

var callBack = function() { ... }
window.setTimeout( callBack, 1000 );
Run Code Online (Sandbox Code Playgroud)

但这会不小心打电话callBack:

var callBack = function(param1, param2) { ... }
window.setTimeout( callBack('foo','bar'), 1000 );
Run Code Online (Sandbox Code Playgroud)

javascript callback

8
推荐指数
2
解决办法
6558
查看次数

使用箭头函数将参数传递给回调函数

我知道这是ES5的一个重复问题,但是我正在寻找ES6箭头功能的语法。我的代码如下。

fetchItems = (callback) => {
    //After ajax success
    callback(response);
}

const myParams = {name:"John"}
this.fetchItems((res) => {
    console.log(res.data);
});
Run Code Online (Sandbox Code Playgroud)

对于上述情况,我想将一些参数(myParams)与函数调用一起传递并进入函数,如何归档该文件,请帮忙。

javascript ecmascript-6 arrow-functions

6
推荐指数
1
解决办法
1万
查看次数

向回调函数添加其他参数

我正在Node.js中构建一个系统,它应该找到文件夹数组中的所有文件,对它们进行统计,然后使用该信息做一些额外的工作.

我正在使用fs.readdir()从每个文件夹同步获取所有文件.我的代码看起来像这样:

for(i=0,max=paths.length; i<max; i++) {
    var path = paths.pop();
    console.log("READING PATH: " + path);
    fs.readdir(path, function(err, files) { handleDir(err, files, path); });
}
Run Code Online (Sandbox Code Playgroud)

问题是,根据readdir()执行的速度,handleDir()获取错误的路径.发生这种情况是因为在回调运行时,下一个循环已经开始 - 意味着路径变量已经改变.

所以,我需要做的是以某种方式将路径变量锁定到它的特定回调函数.我想不出有什么好办法 - 任何人都有一些想法?

javascript callback synchronous node.js

5
推荐指数
2
解决办法
4653
查看次数

Javascript:如何传递带有预期参数的回调

我想在2秒后将选择的字符串打印到控制台。

'Hello'2秒后将打印到控制台:

function log() {
  console.log("Hello")
}

t = setTimeout(log, 2000)
Run Code Online (Sandbox Code Playgroud)

但是我没有选择打印哪个字符串。它被硬编码在函数中。

接下来的代码确实会打印'myChoice'到控制台,但会立即执行,而不是等待2秒钟:

function log(st) {
  console.log(st)
}

t = setTimeout(log("myChoice"),2000)
Run Code Online (Sandbox Code Playgroud)

据我了解,这是因为setTimeout希望我为其提供函数。

如何将log函数提供给setTimeout并告诉它在运行时希望它使用我提供的任何字符串?

笔记

  • 我实际上不关心2秒钟后的日志记录。这是一个原型问题,适用于我的一般性问题,即如何告诉javascript我希望函数在调用时使用哪些参数。
  • 奖励问题:如何更好地表达我的问题标题?“ callback”在这里是否正确?

编辑:有些人将此标记为重复,并且实际上问题标题与另一个主题几乎相同。但是,另一个问题的主体似乎已经将所有答案锚定为解决问题的特定方式,即使用中间函数。我认为我得到的答案是给出该问题标题的最佳答案。

javascript

4
推荐指数
1
解决办法
48
查看次数

回调函数中如何传递参数?

我已经开始学习用于 Web 开发的 JavaScript,目前我陷入了回调函数的某个点。问题是我无法理解 JavaScript 中参数是如何传递的。

代码:

const arr = [1, 2, 3, 4, 5, 6, 7, 8];
function myfunc(value){ //i had set a parameter 'value'
  console.log(value); // i had printed the 'value'
}
arr.forEach(myfunc); // i had not passed any argument in myfunc
Run Code Online (Sandbox Code Playgroud)

我真的很困惑myfunc (value)如何从 forEach 函数或任何函数中获取“value”参数,例如:

const numbers1 = [45, 4, 9, 16, 25];
function myFunction(value) { //myFunction has parameter 'value'
  return value * 2;
}
const numbers2 = numbers1.map(myFunction); /* here, how value arguments are …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

0
推荐指数
1
解决办法
2336
查看次数