2016-04-20 11 views
43

Costruire un app ionico e sono improvvisamente imbattuto in un problema che mi sto trovando davvero difficile eseguire il debug in cui il browser è 'rinviando' a lungo l'esecuzione di attività di timer che causano le mie opinioni per eseguire il codice nei loro controller solo una volta (anche quando il controller è ricaricato esplicitamente).Angularjs differita log-in esecuzione compito timer (s)

Attenzione è:

differito a lungo in esecuzione compito timer (s) per migliorare la scorrevolezza di scorrimento. Vedi crbug.com/574343.

Quello che sto cercando:

  • La comprensione del avvertimento e perché si verifica
  • Qualsiasi indicazioni sul come fare per il debug di un tale avvertimento.

Grazie in anticipo.

Aggiornamento mi dicono che è importante notare che, senza mai ricevere gli errori e gli avvisi solo come la causa per i miei problemi, allora ho rollback ad una versione funzionante.

Questa versione di lavoro ha ancora avvertimenti che appaiono, ma non influenza il funzionamento della mia candidatura.

+0

Come dice l'avviso, v'è almeno un'attività che sta bloccando questa operazione.Quello che vorrei fare è trovare quale compito possa causare "pesantezza". Se non hai fortuna su questo, vorrei commentare il pezzo del codice e vedere dove l'avviso inizia a comparire/scomparire. – tsuz

+0

@ user013948 Ho provato senza successo, il motivo principale è che l'errore non compare fino a quando non ho navigato lontano dalla vista, sia indietro che avanti. – Vince

+0

Per me questo sta accadendo su un progetto "startapp" (quasi vuoto) con solo due stati e un codice minimo sui controller su ionico 1.3.0 quando si naviga indietro nella storia. Ho solo due pagine e quando preme nella seconda pagina dà questo errore dopo aver navigato alla prima pagina. Anche allora non registra sempre questo errore. Non ho notato questo con le versioni precedenti di ionico, quindi questo indicherebbe che si tratta di un problema ionico. – thepio

risposta

1

Ho affrontato questo problema quando la funzione è stata chiamata solo la prima volta la vista è stato caricato. Notato questo avvertimento nella console, ma non sono sicuro se questo è legato alla funzione chiamata solo una volta. Nel controllore, ho spostato la mia chiamata di funzione dentro "$ ionicView.enter" e viene chiamato ogni vista volta viene caricato.

$scope.$on('$ionicView.enter', function() { 
      callMyFunction(); 
     }); 

Spero che questo aiuti.

+0

Mentre in teoria dovrebbe funzionare, e l'avevo già implementato, questa non è la soluzione per me ma potrebbe essere una per gli altri. Sfortunatamente, anche con questo approccio, l'evento 'enter' viene chiamato solo una volta. – Vince

+0

puoi inserire un codice di esempio per il tuo problema? –

+0

anche questa non è una soluzione per me poiché sto già usando ** $ ionicView.afterEnter ** e ricevo ancora questo errore – Atula

6

bene nel caso in cui si sta facendo attività utilizzando $ timeout, avete avuto modo di fermarsi e distruggerli altrimenti si creerebbe l'errore avete dichiarato

per esempio:

var timer = $timeout(
         function() { 
          console.log("Timeout executed", Date.now()); 
         }, 
         2000 
        ); 

Se si avvia un timeout come sopra allora devi distruggere il timer come segue:

    // When the DOM element is removed from the page, 
        // AngularJS will trigger the $destroy event on 
        // the scope. This gives us a chance to cancel any 
        // pending timer that we may have. 
$scope.$on(
         "$destroy", 
         function(event) { 
          $timeout.cancel(timer); 
         } 
        ); 
0

Suona come si può avere il numero massimo di connessioni nel tuo browser. Potresti voler ridurre le tue richieste http a una singola richiesta che contiene qualcosa che sarebbe 10 richieste vs 10 richieste http separate.

La risposta per quanto riguarda la tua domanda è qualcosa sulla falsariga di massima richiesta HTTP al browser.

"Numero massimo di predefinite simultanee connessioni persistenti per del server/proxy:"

anche risposto qui se sto correttamente dal presupposto - Max parallel http connections in a browser?

Problemi correlati