Ist JavaScript single-threaded ist? Wenn nicht, wie bekomme ich die synchronisierten Zugriff auf gemeinsame Daten?

Ich habe eine web-Seite mit DIVs mit einem mouseover - handler, der vorgesehen ist, um zu zeigen, ein pop-up-Informationen, die Blase. Ich will nicht mehr als eine info-Blase sichtbar sein, eine Zeit. Aber wenn sich der Benutzer bewegt die Maus schnell über zwei Elemente, manchmal bekomme ich zwei Blasen. Sollte dies nicht passieren, da der code zum anzeigen einer pop-up wird die Vorherige pop-up.

Wäre dies ein multi-Thread-system ist, dann wäre das problem offensichtlich: es gibt zwei threads versuchen zu zeigen, ein pop-up, und Sie beide Abbrechen vorhandenen pop-ups, dann pop-up, die Ihre eigenen pop-ups. Aber ich nahm an, JavaScript ist laufen immer single-threaded, welche dies verhindern würde. Bin ich falsch? Sind event-Handler asynchron ausgeführt wird, in welchem Fall ich brauche synchronisierten Zugriff auf gemeinsam genutzte Daten, oder sollte ich stattdessen auf der Suche nach bugs in der code-Bibliothek für die Aufhebung pop-ups?

Bearbeitet, um hinzufügen:

  • Der Bibliothek in Frage SIMILE Timeline und seine Ajax-Bibliothek;
  • Die event-handler-Aufruf SimileAjax.DOM.cancelEvent(domEvt), was ich davon ausgehen, basierend auf dem Namen bricht die bubbling-events:
  • Nur, damit die Sache mehr kompliziert, was ich eigentlich mache, ist ab einem timeout, wenn keine Kündigung durch eine moustout zeigt die pop-up, dies bestimmt zu verhindern, pop-ups, flimmern störend, aber dummerweise haben die umgekehrte Wirkung.

Werde ich einen anderen Sack auf, und sehen, ob ich herausfinden können, wo ich bin, die falsch gehen. 🙂

Schreibe einen Kommentar