2010-03-08 14 views
5

Ich versuche einen Weg zu finden, den gesamten Code zu verzögern, der stattfindet, nachdem ich einen Serviceanruf gemacht habe. Der Grund für diese Verzögerung ist, dass mein Dienst den für die folgenden Funktionen erforderlichen Code zurückgibt und das Ergebnis, das ich an diese folgenden Funktionen übergebe, nicht definiert ist.Jquery Delay Funktionsaufrufe

Ich habe versucht, die setTimeout(), um die Funktion Befestigung, die direkt nach dem Service-Aufruf aufgerufen wird, aber dann springt es nur die Funktion, die ich auf den Timeout gesetzt und springt in die nächste Funktion ... Meine Web-Methode, die ich Uhr Berufung ist nicht so groß und tut nichts, was zu intensiv ist

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

ich die Verzögerung gefunden hatte() und dachte, das könnte funktionieren, aber ich habe nicht jquery 1.4 und kann es nicht als von noch.

Gibt es irgendetwas, das helfen kann ..?

+1

Nicht klar, was das Problem ist. Der Code, den du zeigst, ist kein Javascript, oder? Ich denke, es ist eine serverseitige Methode, die über Json aufgerufen wird? Sie fragen jedoch, wie Sie den Browser verzögern können. Der Code, den du zeigst, ist wahrscheinlich irrelevant, oder? Können Sie den tatsächlichen browserseitigen Code anzeigen, wo Sie die Verzögerung vornehmen möchten? – Cheeso

+0

Ich kann den Code nicht richtig in das Formular schreiben .. so hoffe ich kann es schaffen .. – Avien

Antwort

0

gut .. Ich konnte nicht immer die Funktion erhalten zu verzögern, und ich konnte nicht den onCallback verwenden, um die Funktionen aufzurufen ich verzögern wollte. Also habe ich den Wert gesetzt, den ich bekommen wollte, als ich die Seite geladen habe. Ich setze stattdessen die Werte auf die Zeilen .. es ist nicht genau das, was ich tun wollte, aber es funktioniert. Meine Seite lädt auch einen Bruchteil einer Sekunde langsamer.

3

Rufen Sie die Funktion als Rückruf Ihres Serviceanrufs auf. Wie rufst du deinen Service an?

+0

das könnte funktionieren ... Ich werde das versuchen – Avien

0

hier ist ein Teil des Codes ..

der GetCheckedOutFieldingsForUser ist der Service Anruf, den ich in meinem Beitrag beziehen. Die beiden editUser Funktionen Nachfolgend sind die Funktionen, die ich .. verzögern möchte, wenn ich die Verzögerung setzen auf die setTimeout('$popup.load("Forms/EditUserForm.htm #EditUserForm", null, function() { EditUserLoaded(cacId, onSaveCallback); });', 1000); es dem EditUserLoaded überspringt, die die richtigen Ergebnisse

function EditUserLoaded(id, onSaveCallback) 

{ $

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); }); } geben tut ("#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"); 
    } 
+0

Ich kann nicht sagen, was Sie versuchen zu machen. Bitte bearbeiten Sie Ihre ursprüngliche Frage, indem Sie alles löschen, was nicht relevant ist, und den Code richtig formatieren. –

0

Nachdem ich meinen ursprünglichen Beitrag erneut gelesen habe, sehe ich, dass es so verwirrend aussieht ... was ich getan habe, war; Ich erstelle eine zweite Methode getUserRecords, die ein 'Flag' erhalten hat, ich rufe getUserRecords von meiner ersten, getUser-Methode auf und gebe einen neuen Objekttyp mit dem Flag zurück, das im neuen Objekt enthalten ist.