《一》执行同一个方法体,里面有异步的逻辑代码,如果这个异步请求还没有执行完毕时,我们又对它进行了第二次调用,它会使用最后一次的执行操作。例如:
var test = {
init:function(){
this.temp = "temp" + new Date().getTime();
console.log(this.temp );
self = this;
this[this.temp] = function(){
setTimeout(function(){
console.log(this.temp);
},3000)
}
},
excute:function(){
this[this.temp]();
}
};
第一次执行:
test.init();
test.excute();
第二次执行:
test.init();
test.excute();
在两次init时输出的 temp是各不相同 。
但我们在异步函数体输出的却是相同的,也即是第二次执行的被第一次的给覆盖掉了 。这和我们理想中的状态差别不是一般的大。在很多应用场景当中,比如说我们做了一个异步请求,还没有来得异步数据处理完毕,我们又进行了第二次操作。 就会出现处理数据混乱。
《二》有没有解决办法呢:请看下面的代码:
var test = {
init:function(){
this.temp = "temp" + new Date().getTime();
console.log(this.temp);
self = this;
this[this.temp] = (function(){
var bb = self.temp;
return function(){
setTimeout(function(){
console.log(bb);
},3000)
}
})();
},
excute:function(){
this[this.temp]();
}
};
test.init();
test.excute();
这个也就是在异步包含体给加了一个闭包,把所要传的值放在临时变量中,这样就解决了重复调用最后的属性值了。
相关推荐
使用此插件传输的数据对象是多样化的,可传输除了DOM元素之外的任何JavaScript支持的数据类型,一次传输的数据总量最大可达40kb,相对于其它Javascript跨域相互调用的方法,有着支持数据类型多、可传输数据量大的...
当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 17、abstract class和interface有什么区别? 声明方法...
开发人员借此可以使用无法立即获得的返回值(如异步Ajax请求的返回结果),而且第一次能够附加多个事件处理器。 例如,使用了新的jQuery内部Ajax API就可以实现下面的代码了: // Assign handlers immediately ...
动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和...
用 PostMessage、SendNotifyMessage、SendMessageCallback 等异步函数发送系统消息时,参数里不可以使用指针,因为发送者并不等待消息的处理就返回,接受者还没处理指针就已经被释放了。 5、在 Windows 2000/XP 里,...
获取足够多的问题领域的知识,需求抽取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方法等;还有知识工程方法,例如,场记分析法、卡片分类法、分类表格技术和基于模型的知识获取等 ...
并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取...
0288 试图释放不属于调用者的多路同步信号。 0298 信号投递的次数太多。 0299 仅完成部分 ReadProcessMemory 或 WriteProcessMemory 请求。 0300 操作锁定请求被拒绝。 0301 系统接收了一个无效的...
## 1. 进程和线程的区别? * 调度:进程是资源管理的基本单位,线程是程序执行的基本单位。...* 协程能保留上一次调用时的状态。 ## 3. 并发和并行有什么区别? 并发就是在一段时间内,多个任务都
参数化您的请求:使用我们内置的动态变量库来生成动态虚拟数据,以测试同一请求具有不同值的多次迭代。 检查任何大小的响应:查看状态码,响应时间和响应大小。 Postman的自动语言检测,链接和语法突出显示,搜索...
全书分6篇共25章,主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows...
备份Windows NT的注册表 备份磁带集的循环 理解备份记录和存储循环 设置备份选项 使用Windows NT备份恢复数据 为一次计划好的备份工作创建一个备份脚本文件 使用AT命令调度一次备份 NT备份程序在并行设备上的使用 ...
<BR>Java使用和C++类似的异常处理<BR>1、处理错误的方法有很多流行方法<BR>2、一般方法是把程序处理代码段分散到系统代码中,在可能发生错误的地方处理错误优点:便于程序员能够条理的看到程序中异常的处理缺点:...
如果您的服务具有多个IP地址,则在第一次连接失败时,OkHttp将尝试使用备用地址。 这对于IPv4 + IPv6和冗余数据中心中托管的服务是必需的。 OkHttp支持现代TLS功能(TLS 1.3,ALPN,证书固定)。 可以将其配置为回...
锁的多次嵌套调用; 8. 其它对象的等待方式有:优先级等待和先进先出(节省内存)等待,在创建时设置; 9. 内核数据的同步,除在任务切换,及任务和内核之间切换堆栈时暂时关中断外,其它 地方均以延迟过程...
使用豆瓣是为了获取信息,但信息的获取是基于条目和算法,还是基于友邻和人,这个问题在豆瓣的多次改版中大概一直悬而未决。 这次,一个叫“豆瓣”的应用选择的是基于条目的推荐。但我个人作为一个重度豆瓣用户,...