Jquery延迟函数调用

时间:2010-03-08 22:19:48

标签: c# jquery web-services

我正在尝试找到一种方法来延迟我进行服务调用后发生的所有代码。这种延迟的原因是我的服务返回以下函数的代码,我传递给以下函数的结果是未定义的。

我尝试将setTimeout()附加到服务调用后直接调用的函数,但是它只是跳过我设置超时的函数并跳转到下一个函数...我的web方法我是打电话不是那么大,也没有做任何过于密集的事情

public bool GetSpreadsheetStatusForAdmin(string cacId)
    {
        SpreadSheetStatus result = new SpreadSheetStatus();
        List<Data.Spreadsheet> spreadsheets = SpreadsheetManager.GetUserSpreadsheets(GetCurrent.Identity);
        if (spreadsheets.Count != 0)
        {
            foreach (Data.Spreadsheet spreadsheet in spreadsheets)
            {
                if (spreadsheet.Status == SpreadsheetStatus.Pending)
                {
                    return true;
                }
            }
        }
        return false;
    }

我找到了延迟()并认为可能有效,但我没有jquery 1.4并且暂时无法使用它。

有什么可以帮助..?

4 个答案:

答案 0 :(得分:3)

将此功能称为服务呼叫的回叫。你怎么称呼你的服务?

答案 1 :(得分:0)

这里有一些代码..

GetCheckedOutFieldingsForUser是我在帖子中提到的服务调用。下面的两个EditUser函数是我想要延迟的函数..如果我把延迟放在setTimeout('$popup.load("Forms/EditUserForm.htm #EditUserForm", null, function() { EditUserLoaded(cacId, onSaveCallback); });', 1000);上它会跳到EditUserLoaded,它没有给出正确的结果

function EditUser(id, onSaveCallback) { $("#EditUserPopup").remove(); var $popup = $("<div id='EditUserPopup'></div>"); $("body").append($popup); $popup.load("Forms/EditUserForm.htm #EditUserForm", null, function() { EditUserLoaded(cacId, onSaveCallback); }); }

function EditUserLoaded(id, onSaveCallback)

{     $(“#EditUserCancelButton”)。click(function(){ShotdownEditUserForm()});

alert(isCheckedOut + "EditUserLoaded");
CallMfttService("ServiceLayer/UserManager.asmx/GetUser", "{id:'" + id + "'}", function(result)
{
    if (!userIsAdmin)
    {
        $("#EditUserForm input").attr("disabled", "disabled");
        $("#EditUserForm select").attr("disabled", "disabled");
        $('#EditUserFormHeader').text("View User");
        $("#EditUserCancelButton").text("Close");
        $("#EditUserSaveButton").hide();
    }
    else 
    {
        if (isCheckedOut == "True")
        {
            $("#EditUserOrganization").attr("disabled", "disabled");
        }

        $("#EditUserSaveButton").click(function() { SaveUser(id, onSaveCallback); }).removeAttr("disabled");
    }

答案 2 :(得分:0)

嗯..我无法得到延迟的功能,我无法使用onCallback来调用我想要延迟的功能。所以当我加载页面时,我最终设置了我想要的值。我正在设置行的值而不是......这不是我想要做的,但它确实有效。我的页面确实加载了一小段时间......

答案 3 :(得分:0)

重新读完我的原帖后,我觉得它看起来很混乱...... 我最终做的是;创建第二个方法getUserRecords得到一个'flag',我从我的第一个getUser方法调用getUserRecords并返回一个新对象类型,其中包含新对象中的标志。