【问题标题】:Jquery Delay Function CallsJquery 延迟函数调用
【发布时间】:2010-03-08 22:19:47
【问题描述】:

我正在尝试找到一种方法来延迟在我拨打服务电话后发生的所有代码。这种延迟的原因是我的服务返回了以下函数所需的代码,而我传递给这些以下函数的结果是未定义的。

我尝试将 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;
    }

我找到了 delay() 并认为它可能有效,但我没有 jquery 1.4 并且目前还不能使用它。

有什么可以帮忙的吗?

【问题讨论】:

  • 不清楚是什么问题。您显示的代码不是javascript,是吗?我猜这是一个服务器端方法,通过 json 调用?但是你问的是如何在浏览器中延迟。所以你展示的代码可能是无关紧要的,对吧?您能否显示您想要延迟的实际浏览器端代码?
  • 我无法在表单中正确发布代码..所以我希望你能把它弄出来..

标签: c# jquery web-services


【解决方案1】:

调用该函数作为服务调用的回调。你如何调用你的服务?

【讨论】:

    【解决方案2】:

    这里是一些代码..

    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");
        }
    

    【讨论】:

    • 我不知道你想做什么。请编辑您的原始问题,删除任何不相关的内容并正确格式化代码。
    【解决方案3】:

    嗯.. 我无法让函数延迟,也无法使用 onCallback 调用我想要延迟的函数。所以我最终设置了我在加载页面时想要获得的值。我改为在行上设置值.. 这不是我想要做的,但它有效。我的页面加载速度也慢了几分之一秒..

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多