-
关于函数调用,同步的现象5
我想在chooseQuery方法执行的最后调用search()函数,而search()要引用生成的输入框的值,然而我的代码程序每次执行的时候,当调用search()时,输入框中的值还未设进去,即每次得到的值是空的.但是设置输入框的方法明明在search()函数之后执行的。而我确定值有设进去。是不是和上下文有关?
JScript code
/**
* @param data
* @return
*/
function chooseQuery(data)
{
var methodCount = dojo.query("input[type='radio']");
for (var i = 0; i < methodCount.length; i++)
{
if (methodCount[i].checked)
{
var optionValue = methodCount[i].value;
// queryName是一个FilteringSelect 改变它的选项
queryName.attr("value",optionValue,false);
// 根据变化的选项值创建不同的输入框或下拉框
selectQuery();
// 初始化显示grid的面板
initGridPane();
// 将值设置到生成的输入框中
addElementToDialogById(optionValue,data);
queryName._lastValueReported=null;
dijit.byId("availableQueriesDialog").hide();
dijit.byId("queriedConcept").attr("style", "display:none;");
break ;
}
}
// 根据值进行查找
search();
}
selectQuery();的代码如下
JScript code
function selectQuery()
{
intiParamPane();
var datatr = dojo.byId("datatr");
qnStore.fetch
(
{
// search items by condition
query :
{
name :queryName.value
},
onComplete : function(items, request)
{
if ((qnStore.getValues(items[0],"parameter")).length > 0)
{
var properties = qnStore.getAttributes(items[0]);
// hold all of the values for the parameter
var parameters = qnStore.getValues(items[0], properties[1]);
// hold all of the types for parameter
var types = qnStore.getValues(items[0], properties[2]);
// judge the parameter whether is needed
var requires = qnStore.getValues(items[0], properties[3]);
// if has regular
var regulars = qnStore.getValues(items[0], 'regular');
for (var i = 0; i < parameters.length; i++)
{
document.getElementById("inputDiv").setAttribute("class", "inputDiv");
if (types[i] == "array")
{
createSelectElement(datatr, parameters[i],requires[i], types[i]);
}
else
{
createInputElement(datatr, parameters[i], requires[i], regulars[i]);
}
}
}
}
}
);
}
search()函数代码如下
JScript code
function search()
{
var queryName = dojo.byId('queryName').value;
var flag = validateParameter(queryName);
if (flag)
{
return;
}
initGridPane();
var dialog = (dijit.byId("waitDialog") == null ? showWaitingDialog() : (dijit.byId("waitDialog"))) ;
dialog.show();
qnStore.fetch
({
// search items by condition
query :
{
name :queryName
},
onComplete : function(items, request)
{
var properties = qnStore.getAttributes(items[0]);
// hold all of the values for the parameter
var parameters = qnStore.getValues(items[0], properties[1]);
// hold every params
var params = "?method="+queryName;
for (var i = 0; i < parameters.length; i++)
{
var attribute = parameters[i];
var _value = dojo.byId(parameters[i]).value;
params += "&"+attribute+"="+_value;
}
console.log(browser_action_name + params);
dojo.xhrGet
(
{
handleAs: 'json',
url: browser_action_name + params,
load:showResult,
error:availableQueriesDialog
}
)
}
});
}
2010年12月02日 16:07
目前还没有答案
相关推荐
结论:创建线程调用函数,可以同步执行创建线程后面的代码(本例的for循环),直接调用函数,则先调用函数执行完毕后,再执行后面的代码,因为是调用的线程API而不是TTread类,所以它们共同的缺点是运行过程中不能...
进程同步就是控制这些进程间相互协调,避免出现不一致状态或数据竞争的现象。例如,当两个进程同时尝试写入同一文件时,就需要同步机制来确保它们按照预定顺序进行操作。C语言中实现进程同步,可以借助于信号量...
在这种情况下,函数调用不会立即返回结果,而是通过回调函数在稍后的某个时间点提供结果。这种模式在事件驱动编程和多线程编程中尤为常见。 5. **灵活性**:通过使用回调函数,可以灵活地调整程序的行为,而不需要...
在设计多线程程序时,不仅要考虑同步问题,还要注意减少线程间的上下文切换,避免死锁和饥饿现象,确保程序的健壮性和可维护性。在分析和调试多线程程序时,使用线程调试器或日志记录工具也会有所帮助,以便找出潜在...
副作用是函数式编程试图最小化的一种现象,指的是函数除了返回值之外还可能产生的额外效果。减少副作用的好处在于: - **提高程序的可预测性**:没有副作用的程序更容易理解和调试。 - **提高代码的可复用性和可测试...
Windows API提供了`UpdateWindow`和`RedrawWindow`等函数,可以用来刷新和重绘窗体,以消除闪烁现象。 总之,通过熟练掌握`DllImport`和P/Invoke技术,C#开发者能够充分利用丰富的Win32 API资源,实现更复杂的系统...
线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。 举例1: 银行存款 5000。柜台,折:取3000;提款机,卡:取 3000。剩余:2000 举例2...
实验首先展示了在缺乏同步机制时,两个共享数据资源的并发线程可能导致的异常现象。具体代码如下: ```c DWORD WINAPI run(LPVOID p) { int counter = 0; int temp1, temp2, r; do { temp1 = accnt1; temp2 =...
**同步方法**指的是调用一个函数或方法后,程序会等待该方法执行完毕才会继续执行后续代码。这种方式确保了执行顺序的线性,使得代码易于理解和调试。然而,当执行的任务耗时较长,如网络I/O、磁盘读写等,同步方法...
这个实验的目的是为了加深对进程概念的理解,明确进程和程序的区别,学习进程创建的过程,进一步认识进程并发执行的实质,分析进程争用资源的现象,学习解决进程互斥的方法和解决进程同步的方法。 在这个实验中,...
具体表现为:创建了UDTF函数后,在本地Hive连接中可以正常调用该函数,但在通过HiveServer2进行远程连接时却无法调用该UDTF函数。这种现象通常称为“UDTF函数不生效”。 #### 三、原因分析 出现上述问题的主要原因...
同步调用是JavaScript中传统的Web服务调用方式。在同步调用中,JavaScript引擎会暂停当前代码的执行,直到Web服务请求完成并返回结果。这种方式的优点是简单直接,因为代码按照顺序执行,处理结果可以直接利用。然而...
学生需要掌握`fork()`、`pipe()`等系统调用的使用,同时要理解在并发执行时可能出现的随机输出现象。通过分析并发执行的实质,学生可以深入理解操作系统的工作原理。 此外,通过增加系统调用,学生可以了解内核的...
如果进程停滞,则很可能发生了死锁现象。此时需要分析导致死锁的原因,并尝试调整算法以避免死锁。 ##### (2)解决哲学家进餐问题的方法 - **方法a**:仅当哲学家的左右两只筷子均可用时,才允许他拿起筷子进餐。...
回调函数(Callback Function)是一种将函数作为参数传递给另一个函数的方法,以便在特定条件满足时调用这个函数。在JavaScript中,最常见的应用场景是处理异步操作,如定时器、网络请求或用户事件。当异步操作完成...
此外,还有`std::mutex`、`std::lock_guard`等用于互斥和同步的类,它们简化了对Win32 API的直接调用,使多线程编程更加安全和便捷。 在实际编程中,为了防止数据竞争和死锁,我们还需要遵循一些最佳实践,如最小化...
通过调用`ode45`函数,解微分方程并绘制同步误差曲线,展示了不同的耦合系数对同步效果的影响。 2. 微分函数文件(chen.m): 这里定义了Chen混沌系统的微分方程。Chen系统由三个非线性微分方程组成,形式为: \...
通过本实验,我们可以了解并发执行的实质、分析进程竞争资源的现象,并学习解决进程同步互斥的方法。 一、临界资源的互斥访问 在多进程环境下,对临界资源的互斥访问是非常重要的。为了实现多进程对临界资源的互斥...
如果fork()函数调用成功,返回值大于0,表示新创建的进程的pid;如果返回值等于0,表示当前进程是子进程;如果返回值小于0,表示fork()函数调用失败。 在实验中,我们使用C语言编写程序,使用fork()函数创建两个子...