javascript - 将参数传递给回调函数

标签 javascript

<分区>

我需要将参数传递给 Javascript 中的回调函数,因此我执行了以下操作,创建了一个匿名函数作为字符串,然后将其传递:

var f = "var r = function(result) {do_render(" + i + ",result.name,result.data);}"
eval(f)
$.getJSON("analysis?file=" + getParameterByName('file') + "&step=" + i,r);

但这似乎不是一个好主意。有没有更好的办法?

最佳答案

您可以使用多种技术来执行此操作。其中之一是创建一个“密封”其中一个变量的新函数:

function myCallback(i, result) { ... }

function createCurriedFunction(i, func, context) {
  return function (result) { func.call(context, i, result); }
}

for (i = 0; i < 5; i += 1) {
  var curriedFunc = createCurriedFuncion(i, myCallback, this);
  $.getJSON(url, curriedFunc);
}

上下文是回调函数中“this”将引用的对象。您正在做的事情可能需要也可能不需要;如果不是,你可以传入 null。

实际上有一个函数可以完成名为 bind 的功能,并且可以像这样使用

var curriedFunc = myCallback.bind(this, i), which will seal off the first variable.

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

相关文章:

javascript - 使用 Javascript 和 HTML Canvas 创建类似于 Photoshop 的颜色选择器

Javascript 将秒转换为日期对象

javascript - HTML 不调用 Javascript onclick

Javascript Slider 在过渡结束时无法正常工作

javascript - PrototypeJS 观察窗口尺寸变化?

javascript - jQuery ajax 验证部分工作

javascript - 在 Javascript 中将字符添加到字符串

javascript - 无法阻止表单页面刷新中的返回命中

javascript - 在javascript中实现类似angular ng-repeat的功能

javascript - 尝试以表单形式发送电子邮件时出现 405 错误