问题:自身以外的对象、异步请求相关、定时器等,要调用对象本身的相关方法时,后新建对象中涉及异步操对自身的引用将覆盖前面新建对象中的相应数据。如下:当 var A = new BBMSC(); var B = new BBMSC();B中异步操作中的相关对自身的引用ME将覆盖A中先定义的ME,导致A对象相关操作失败。此时,把BBMSC类代码重新拷贝一份为BBMSC2,var B = new BBMSC2();也是同样的问题。当把BBMSC2中相关异步操作的ME改成MY时,问题解决。
解决:在新建对象时,异步操作时的对象引用名手动赋值。用万能的eval动态改变对象的引用名。暂时先这样,还有其它办法么?
BBMSC.prototype.bldload = function(){
ME = this;
var instanceName = ME.InstanceName;
eval(instanceName + " = this;");
$(citems).change(function(){
//ME.bld($(this).attr('id'), $(this).attr('toid'), '');
//ME.chkbld($(this).attr('id'), $(this).attr('toid'));
eval(instanceName + ".bld($(this).attr('id'), $(this).attr('toid'), '');");
eval(instanceName + ".chkbld($(this).attr('id'), $(this).attr('toid'));");
});
ME.bld(defaultfield,defaultfield,'');
ME.chkbld(defaultfield,defaultfield);
}
if(typeof(ME.COMDATA[tmptofield]) == 'object'){
ME.bldlist(this.COMDATA[tmptofield], tofield);
//eval(instanceName + ".bldlist(" +instanceName + ".COMDATA['"+tmptofield+"'],"+ tofield+");");
}else{
$.getJSON("/?m=arsys&c=ajax",ME.BLDPARR,function(data){
//ME.bldlist(data, tofield);
eval(instanceName + ".bldlist(data, tofield);");
});
}
$("#"+tofield).everyTime('3s','BLDTIMEER'+tofield,function(){
var ltflag = $("#"+tofield).get(0).options[0].text;
if(ltflag == 'Loading...'){
//ME.bld(fromfield, tofield, Math.random());
eval(instanceName + ".bld(fromfield, tofield, Math.random());");
}else{
$("#"+tofield).stopTime("BLDATIMEER"+tofield);
}
},5);
分享到:
相关推荐
事件模式是另一种在JavaScript中处理异步操作的机制,它基于事件驱动的思想,当某个事件被触发时,会执行对应的事件处理函数。 Promises是现代JavaScript中处理异步操作的一个核心概念,它代表了一个尚未完成但预期...
在JavaScript中,常见的设计模式包括: - 单例模式:确保一个类只有一个实例,并提供全局访问点。 - 工厂模式:创建对象时避免使用new操作符,提供更灵活的实例化过程。 - 观察者模式:定义对象间的一种一对多...
7. **回调函数与错误处理**:异步操作中错误处理至关重要,合理的错误处理策略(如try...catch)能确保程序的健壮性。 8. **Web Workers**:在后台线程中执行耗时任务,避免阻塞主线程,提高用户体验。 9. **...
在处理异步操作时,Generator结合yield关键字可以优雅地控制流程,配合co库或async/await可以实现更简洁的异步代码。 在“js-async-tutorial-master”这个教程中,你将会通过一系列的示例和练习,深入学习这些异步...
当你调用一个异步函数时,你可以传递一个回调函数,当异步操作完成时,这个函数会被调用。例如,读取文件、发送网络请求等都是常见的异步操作。 然而,回调函数会导致"回调地狱"问题,即嵌套的回调函数使代码变得...
Mongoose提供了多种异步操作方法,如`find()`, `save()`, `updateOne()`, `deleteOne()`等,这些方法都返回Promise,可以配合async/await或者传统的回调函数进行处理。 例如,当我们需要查询MongoDB中的数据时,...
Promise对象在JavaScript中的引入,是为了更好地处理异步编程,解决回调地狱问题,提供了一种更结构化、更易于理解和维护的方式来处理异步操作。Promise代表一个未来可能完成或失败的任务,它有三种状态:pending...
总之,理解和掌握异步并行与串行foreach是提升JavaScript编程技能的关键步骤,特别是在处理大量数据或异步操作时。通过使用Promise.all()和async/await,你可以构建出高效且易于维护的异步代码。
异步编程是JavaScript中一个重要的概念,它使得JavaScript可以在客户端异步执行任务,从而提高用户体验。但是,异步编程也会带来一些问题,例如回调地狱、代码难以维护等。在本文中,我们将讨论基于JavaScript的异步...
总结来说,JavaScript中的异步函数(ES2017)是异步编程的重要工具,它让处理异步操作变得更加优雅。在Node.js环境中,配合Koa等现代框架,我们可以利用异步函数轻松构建高效的中间件,实现复杂的服务器端逻辑。通过...
- **Promise**:在JavaScript等语言中,Promise对象用于封装异步操作,提供一种链式调用的处理方式,避免了回调地狱。 - **生成器和协程**:如Python的生成器或C#的async/await,提供了更接近同步代码的异步编程体验...
在JavaScript中,首先需要创建一个XMLHttpRequest对象,这是Ajax通信的基础。 ```javascript var xhr = new XMLHttpRequest(); ``` #### 2.2 配置请求 然后配置请求的类型(GET或POST)、URL、是否异步等参数。 `...
这个压缩包"JavaScript_用于节点和浏览器的异步实用程序.zip"显然关注的是JavaScript在处理异步操作方面的应用,这在现代Web开发中至关重要。 异步编程是JavaScript的核心特性之一,它允许代码在不阻塞主线程的情况...
妙味课堂的这个原创JavaScript视频教程,旨在帮助初学者系统地学习和掌握JS的基础知识。 教程共分为5课,涵盖了JavaScript的基础内容,以下是每一课可能涉及的关键知识点: **第1课:JavaScript入门** - ...
回调函数是JavaScript中最早用于处理异步操作的方式。当一个异步任务完成时,我们传递一个函数给它,这个函数会在任务完成后被调用。例如,使用`setTimeout`函数,我们可以延迟执行一个函数,而不是让整个程序等待:...
在JavaScript中对数据库进行操作,通常需要一个后端服务器作为中介,该服务器应提供RESTful API。REST(Representational State Transfer)是一种架构风格,用于设计网络应用程序。通过HTTP方法(GET, POST, PUT, ...
3. 事件循环:JavaScript是非阻塞的单线程语言,它依赖事件循环处理异步操作。事件队列、事件循环和回调函数共同构成了JavaScript异步处理的核心。 4. 执行上下文:每次JavaScript代码执行时,都会创建一个新的执行...
Promise是JavaScript中处理异步操作的一种方式,它提供了一种更加优雅的处理异步逻辑的机制。Promise对象代表了一个可能在未来某个时刻完成的异步操作的结果。它主要有三种状态:pending(等待中)、fulfilled(已...
它们通常涉及回调函数,这种模式有时被称为“回调地狱”,因为当有多个异步操作串联时,代码会变得难以理解和管理。为了解决这个问题,Promise被引入,它允许链式调用和更优雅的错误处理。然而,Promise虽然改进了...