2010-03-08 12 views
5

Estoy tratando de encontrar una forma de retrasar todo el código que ocurre después de realizar una llamada de servicio. El motivo de este retraso es que mi servicio devuelve el código necesario para las siguientes funciones y el resultado que paso es que estas funciones siguientes no están definidas.Jquery Delay Function Calls

He intentado conectar el setTimeout() a la función que se llama directamente después de la llamada de servicio, pero luego se salta la función Configuré el tiempo de espera y salta a la siguiente función ... Mi método web que estoy llamando no es tan grande y no está haciendo nada que sea demasiado intensa

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

que había encontrado el retardo() y pensó que podría funcionar, pero no tengo jQuery 1.4 y no puede utilizarlo como de todavía.

¿hay algo que pueda ayudar ...?

+1

No está claro cuál es el problema. El código que muestra no es javascript, ¿eh? Supongo que es un método del lado del servidor, que se invoca sobre json? Pero usted está preguntando cómo retrasar en el navegador. Entonces, el código que muestra es probablemente irrelevante, ¿no? ¿Podría mostrar el código real del lado del navegador donde desea hacer el retraso? – Cheeso

+0

No puedo conseguir que el código se publique correctamente en el formulario ... así que espero que puedas entenderlo ... – Avien

Respuesta

0

bien .. no pude alguna vez la función de retrasar y que no podía usar el onCallback a llamar a las funciones que quería retrasar. Así que terminé configurando el valor que quería obtener cuando cargué la página. Estoy configurando los valores en las filas ... no es exactamente lo que quería hacer, pero funciona. Mi página también carga una fracción de segundo más lento ...

3

Llamar a la función como una devolución de llamada de su llamada de servicio. ¿Cómo llamas tu servicio?

+0

que podría funcionar ... Lo intentaré – Avien

0

aquí es una parte del código ..

la GetCheckedOutFieldingsForUser es la llamada de servicio que me refería en mi post. Las dos funciones EditUser a continuación son las funciones que me gustaría retrasar .. si pongo el retraso en la setTimeout('$popup.load("Forms/EditUserForm.htm #EditUserForm", null, function() { EditUserLoaded(cacId, onSaveCallback); });', 1000); se salta a la EditUserLoaded, que NO DA los resultados apropiados

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"), haga clic en (función() {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

No puedo decir lo que intentas hacer. Edite su pregunta original eliminando cualquier cosa que no sea relevante y formatee adecuadamente el código. –

0

Después de releer mi publicación original veo que parece confuso como el infierno ... lo que terminé haciendo fue; creando un segundo método getUserRecords que obtuvo un 'indicador', llamo getUserRecords desde mi primer método getUser y devuelvo un nuevo tipo de objeto con el indicador incluido en el nuevo objeto.