0 0

关于函数调用,同步的现象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
目前还没有答案

相关推荐

    DELPI7区别线程API调用函数和直接点用函数〖源代码〗

    结论:创建线程调用函数,可以同步执行创建线程后面的代码(本例的for循环),直接调用函数,则先调用函数执行完毕后,再执行后面的代码,因为是调用的线程API而不是TTread类,所以它们共同的缺点是运行过程中不能...

    进程同步与互斥

    进程同步就是控制这些进程间相互协调,避免出现不一致状态或数据竞争的现象。例如,当两个进程同时尝试写入同一文件时,就需要同步机制来确保它们按照预定顺序进行操作。C语言中实现进程同步,可以借助于信号量...

    C 语言回调函数详解.pdf

    在这种情况下,函数调用不会立即返回结果,而是通过回调函数在稍后的某个时间点提供结果。这种模式在事件驱动编程和多线程编程中尤为常见。 5. **灵活性**:通过使用回调函数,可以灵活地调整程序的行为,而不需要...

    3种多线程实现同步方法

    在设计多线程程序时,不仅要考虑同步问题,还要注意减少线程间的上下文切换,避免死锁和饥饿现象,确保程序的健壮性和可维护性。在分析和调试多线程程序时,使用线程调试器或日志记录工具也会有所帮助,以便找出潜在...

    js函数式编程

    副作用是函数式编程试图最小化的一种现象,指的是函数除了返回值之外还可能产生的额外效果。减少副作用的好处在于: - **提高程序的可预测性**:没有副作用的程序更容易理解和调试。 - **提高代码的可复用性和可测试...

    C#dllimport调用 C# 调用Win32

    Windows API提供了`UpdateWindow`和`RedrawWindow`等函数,可以用来刷新和重绘窗体,以消除闪烁现象。 总之,通过熟练掌握`DllImport`和P/Invoke技术,C#开发者能够充分利用丰富的Win32 API资源,实现更复杂的系统...

    Linux系统编程之线程同步

    线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。 举例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、磁盘读写等,同步方法...

    操作系统实验-进程同步与互斥.doc

    这个实验的目的是为了加深对进程概念的理解,明确进程和程序的区别,学习进程创建的过程,进一步认识进程并发执行的实质,分析进程争用资源的现象,学习解决进程互斥的方法和解决进程同步的方法。 在这个实验中,...

    UDTF函数不生效问题.doc

    具体表现为:创建了UDTF函数后,在本地Hive连接中可以正常调用该函数,但在通过HiveServer2进行远程连接时却无法调用该UDTF函数。这种现象通常称为“UDTF函数不生效”。 #### 三、原因分析 出现上述问题的主要原因...

    Java脚本中的同步和异步Web服务调用

    同步调用是JavaScript中传统的Web服务调用方式。在同步调用中,JavaScript引擎会暂停当前代码的执行,直到Web服务请求完成并返回结果。这种方式的优点是简单直接,因为代码按照顺序执行,处理结果可以直接利用。然而...

    进程管理及理解和增加Linux系统调用

    学生需要掌握`fork()`、`pipe()`等系统调用的使用,同时要理解在并发执行时可能出现的随机输出现象。通过分析并发执行的实质,学生可以深入理解操作系统的工作原理。 此外,通过增加系统调用,学生可以了解内核的...

    操作系统实验二:进程同步

    如果进程停滞,则很可能发生了死锁现象。此时需要分析导致死锁的原因,并尝试调整算法以避免死锁。 ##### (2)解决哲学家进餐问题的方法 - **方法a**:仅当哲学家的左右两只筷子均可用时,才允许他拿起筷子进餐。...

    js 回调函数 2023最新版.rar

    回调函数(Callback Function)是一种将函数作为参数传递给另一个函数的方法,以便在特定条件满足时调用这个函数。在JavaScript中,最常见的应用场景是处理异步操作,如定时器、网络请求或用户事件。当异步操作完成...

    C++多线程及互斥和同步编程详细讲解和事例

    此外,还有`std::mutex`、`std::lock_guard`等用于互斥和同步的类,它们简化了对Win32 API的直接调用,使多线程编程更加安全和便捷。 在实际编程中,为了防止数据竞争和死锁,我们还需要遵循一些最佳实践,如最小化...

    使用驱动和响应系统实现chen氏混沌同步

    通过调用`ode45`函数,解微分方程并绘制同步误差曲线,展示了不同的耦合系数对同步效果的影响。 2. 微分函数文件(chen.m): 这里定义了Chen混沌系统的微分方程。Chen系统由三个非线性微分方程组成,形式为: \...

    操作系统进程同步互斥实验.pdf

    通过本实验,我们可以了解并发执行的实质、分析进程竞争资源的现象,并学习解决进程同步互斥的方法。 一、临界资源的互斥访问 在多进程环境下,对临界资源的互斥访问是非常重要的。为了实现多进程对临界资源的互斥...

    进程创建(南邮操作系统实验).pdf

    如果fork()函数调用成功,返回值大于0,表示新创建的进程的pid;如果返回值等于0,表示当前进程是子进程;如果返回值小于0,表示fork()函数调用失败。 在实验中,我们使用C语言编写程序,使用fork()函数创建两个子...

Global site tag (gtag.js) - Google Analytics