Javascript 全局变量绑定的状态 在函数内
State of Javascript Global Variable binding Inside a function
我正在执行一个 AJAX 调用(使用 dojo(,我想知道将调用对象传递给回调函数的最佳方法是什么
var that = this;
dojo.xhrGet({
url : 'script.php',
handleAs : "javascript",
load : function(response){
/*The callback on success*/
console.log('Ajax Completed Successfully for: ' + that.name);
}
});
我的问题是load
是在"编译时"创建的,还是在"运行时"计算的。基本上,如果that
的值在创建var that = this
和在 AJAX 返回并调用load
后调用它之间发生变化,这种变化会反映在load
中吗?如果是这样,那么确保 AJAX 返回信号调用正确对象的最佳实践是什么?我是否必须为每个对象创建一个特定的加载函数?
谢谢
您可以将
负载括在closure
内:
(function(that){
dojo.xhrGet({
url : 'script.php',
handleAs : "javascript",
load : function(response){
/*The callback on success*/
console.log('Ajax Completed Successfully for: ' + that.name);
}
});
})(this);
(function(x){ })(x);
部分是一个自执行函数,它给出x
或this
的值作为自执行函数的参数。x
或that
的值保持应有的状态。
根据您要执行的操作,可以通过使用延迟来避免使用load:
创建:
function get_data(){
return dojo.xhrGet({
url : 'script.php',
handleAs : "javascript",
});
}
function other_function(){
var that = this;
get_data().then(function(response){
console.log("Ajax completed for" + that.name);
});
}
(我不记得当 ajax 失败时这是否也有效 - 需要测试这一点(
相关文章:
- 如何在渲染函数中检查 react 中子组件的状态
- 从外部函数渲染后更改ReactJS类的状态
- 成功ajax:如果是200状态代码,则运行函数else另一个函数
- 运行函数ifsuccess($.ajax)有200个状态代码
- 在 Redux 状态下存储具有原型函数的对象
- 在异步函数中维护变量的状态
- 限制 .live() 函数在 JavaScript 中变为活动状态的次数
- 我将如何在jQuery中切换setInterval函数的状态
- 为什么javascript slidetoggle函数没有保持打开状态
- 从回调函数获取xhr状态
- 将函数的返回传递到另一个状态
- Javascript:onclick函数工作一次,页面就会恢复到原来的状态
- 获得readyState为4和状态200加上状态文本“0”;OK”;而成功函数仍然没有;我没有接到电话
- 如何在jQuery函数执行's处于活动状态
- 表示改变状态的函数的Redux字
- 当道具函数改变状态时,我该如何使用redux
- 如何跟踪我的状态持续调用函数的次数
- 在AngularJS中切换编辑状态并更改项目'单击另一个函数
- 如何在回调函数中获取 AngularJS 中 $scope 变量的当前状态
- 函数式编程和局部函数状态分配