我可以绑定'这'对于函数
Can I bind something else than 'this' for a function?
我需要将外部变量传递给jQueryAjax的成功函数。我的ajax是这样循环的:
var props = ['a', 'b', 'c'];
var results =
{
a: null,
b: null,
c: null
};
for(var key in props)
{
var prop = props[key];
$.ajax(
{
url: 'someurl',
data:
{
somedata: 'somevalue'
},
success: function(data, status, xhr)
{
// This here does not work properly, because the prop's value changes
// Due to promise stuff
results[prop] = data;
}
});
}
我需要将success中返回的数据填充到正确的位置,但上面的实现不起作用,因为在调用success之前prop
的值发生了变化。
我发现我可以通过将成功函数的this与如下道具绑定来"绕过"这个问题:
success: function(data, status, xhr)
{
results[this] = data;
}.bind(prop)
但这似乎不是一个很好的主意,此外,我只能绑定一个变量,如果需要的话,不能绑定多个
这似乎也不起作用:
success: function(data, status, xhr)
{
var privprop = prop;
results[privprop] = data;
}
那么,基本上,给每个成功回调一个"私有"变量的最佳方式是什么?当整个ajax生成时,prop的值是多少?我可以以某种方式绑定多个变量并覆盖this
以外的内容吗?
尝试通过以下操作来限制特定ajax的每个prop
变量的范围:
for(var key in props)
{
var prop = props[key];
(function(prop){
$.ajax(
{
url: 'someurl',
data:
{
somedata: 'somevalue'
},
success: function(data, status, xhr)
{
// This here does not work properly, because the prop's value changes
// Due to promise stuff
results[prop] = data;
}
});
})(prop);
}
相关文章:
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- Jquery:将函数绑定到已绑定元素的点击事件
- 我可以通过使用函数绑定来保留默认值吗?如果没有,为什么
- 这在 Object 方法中不引用对象,而是引用函数绑定到的标记
- 为什么当我尝试将函数绑定到自身时,“this”对象仍然引用窗口
- 如何将函数绑定到使用链接函数创建 HTML 的角度指令
- 将jquery函数绑定到事件
- 将服务中的函数绑定到$scope(错误:无法设置undefined的属性'onChange')
- 使用闭包/函数绑定将自函数作为回调传递
- 如何在 Javascript 中将函数绑定到对象数据成员的更改
- 需要将内部函数绑定到元素的单击事件
- 在Javascript中将对象原型函数绑定到对象
- 将函数绑定到Twitter Bootstrap Modal Ajax Complete
- ng使用一个不识别临时变量形式ng repeat的函数绑定html
- 将函数绑定到baz后调用fn.apply(bar,[])
- 将函数绑定到采用参数的不同事件
- 如何将返回函数绑定到标记角度
- 在IE9中未检测到视图模型函数绑定,但在FF和Chrome中有效
- 如何将函数绑定到ShadowDOM内部的元素
- 将原型函数绑定到此的方式不那么冗长