2017-02-13 6 views
2

Lassen Sie mich wissen, den Unterschied zwischen dem Setzen von clearTimeout und dem Setzen der gleichen Variablen wie null, die zum Festlegen der ID von settimeout verwendet wird.Einstellung clearTimeOut

Ich habe eine Funktion in unterscore.js unten erwähnt.

function debounce(func, wait, immediate) { 
    var timeout, args, context, timestamp, result; 

    var later = function() { 
     var last = new Date().getTime() - timestamp; 

     if (last < wait && last >= 0) { 
      timeout = setTimeout(later, wait - last); 
     } else { 
      timeout = null; 
      if (!immediate) { 
       result = func.apply(context, args); 
       if (!timeout) context = args = null; 
      } 
     } 
    }; 

    return function() { 
     context = this; 
     args = arguments; 
     timestamp = new Date().getTime(); 
     var callNow = immediate && !timeout; 
     if (!timeout) timeout = setTimeout(later, wait); 
     if (callNow) { 
      result = func.apply(context, args); 
      context = args = null; 
     } 

     return result; 
    }; 
}; 

Es setzt letztlich "Timeout" Variable als "Null" anstelle von ClearTimeOut.

Antwort

1

clearTimeout bricht die geplante Funktion tatsächlich ab, wenn sie noch nicht ausgeführt wurde. Also wenn es.

Dieser Codeabschnitt setzt das Zeitlimit auf Null, wenn die geplante Zeit vor der aktuellen Uhrzeit liegt. Daher setzt er null, um den Wert zu löschen, damit der andere Code weiß, dass kein Timeout wartet. Da dieser Codeabschnitt das Zeitlimit nicht abbrechen muss, wird clearTimeout nicht verwendet.

Grundsätzlich haben clearTimeout und das Deaktivieren einer Variablen nichts miteinander zu tun.

+0

Danke für die Annahme meiner Antwort, es ist nicht sehr klar, also wenn irgendwelche Community-Mitglieder es bearbeiten möchten, fühlen Sie sich frei. – PaulBGD

Verwandte Themen