Moment: Die Methode "isBefore" ist nicht deterministisch

Erstellt am 6. Apr. 2018  ·  5Kommentare  ·  Quelle: moment/moment

Ich habe dies bei der Arbeit an einem Kalender gefunden, der bestimmte Datumsbereiche deaktivieren muss. Es ist manchmal um eins aus.

Fortpflanzen:

  1. Öffnen Sie die Chrome Dev-Tools und geben Sie moment().isBefore(moment())
    Führen Sie es immer und immer wieder aus, es sollte immer false , zeigt aber manchmal true . Dies scheint isAfter Methode

image

Bug

Alle 5 Kommentare

Es sieht so aus, als ob sich isBefore korrekt verhält, aber irgendwie werden die beiden moment () -Objekte manchmal erstellt, wobei das zweite das frühere Datum hat. Dies ist die Prüfung, die unterschiedliche Ergebnisse liefert:
https://github.com/moment/moment/blob/develop/src/lib/moment/compare.js#L26

Ich verstehe, danke, dass Sie sich darum gekümmert haben und sich bei mir gemeldet haben!

Ich denke, es hängt von der genauen Millisekunde ab, in der die Momente erzeugt werden. Die Tatsache, dass die zweite jemals nach der ersten erstellt wird, fühlt sich wie ein Browser-Fehler an.

Zu diesem Thema wird hier ausführlicher gesprochen: https://github.com/moment/moment/issues/2697

Die Tatsache, dass die zweite jemals nach der ersten erstellt wird, fühlt sich wie ein Browser-Fehler an.

Sieht gut aus für mich.

Vergleichen Sie moment().isBefore(moment()) mit:
somethingThrowingAnError().method(somethingWithSideEffects())
Oder auch:
somethingReturningNull().method(somethingWithSideEffects())

Sie würden nicht erwarten oder wollen, dass somethingWithSideEffects() aufgerufen wird, wenn ein Fehler ausgelöst wird / die Methode möglicherweise nicht aufgerufen werden kann.

Alles, was zu sagen ist: first _ muss vor second aufgerufen werden:
first().method(second())

@ispacowanguitar Manchmal werden die Momente in derselben Millisekunde erstellt,

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen