Moment: metode `isBefore` tidak deterministik

Dibuat pada 6 Apr 2018  ·  5Komentar  ·  Sumber: moment/moment

Saya menemukan ini saat mengerjakan kalender yang perlu menonaktifkan rentang tanggal tertentu. Terkadang salah satu.

Untuk mereproduksi:

  1. buka chrome dev-tools, ketik moment().isBefore(moment())
    Jalankan berulang kali, seharusnya selalu false , tetapi terkadang menunjukkan true . Ini tampaknya tidak terjadi dengan metode isAfter . Berikut tangkapan layarnya.

image

Bug

Semua 5 komentar

Sepertinya isBefore berperilaku dengan benar tetapi entah bagaimana dua objek moment () terkadang dibuat dengan yang kedua memiliki tanggal sebelumnya. Ini adalah pemeriksaan yang mengembalikan hasil yang berbeda:
https://github.com/moment/moment/blob/develop/src/lib/moment/compare.js#L26

Begitu, terima kasih telah memeriksanya dan kembali kepada saya!

Saya pikir itu tergantung pada milidetik yang tepat saat momen tersebut dibuat. Fakta bahwa yang kedua pernah dibuat setelah yang pertama terasa seperti bug browser.

Ada percakapan yang lebih luas seputar topik ini di sini: https://github.com/moment/moment/issues/2697

Fakta bahwa yang kedua pernah dibuat setelah yang pertama terasa seperti bug browser.

Tampak baik-baik saja bagiku.

Bandingkan moment().isBefore(moment()) dengan:
somethingThrowingAnError().method(somethingWithSideEffects())
Atau bahkan:
somethingReturningNull().method(somethingWithSideEffects())

Anda tidak akan mengharapkan atau ingin somethingWithSideEffects() dipanggil ketika kesalahan dilemparkan / metode tidak mungkin dipanggil.

Semua yang mengatakan: first _must_ dipanggil sebelum second :
first().method(second())

@ispacowanguitar terkadang momen dibuat dalam milidetik yang sama,

Apakah halaman ini membantu?
0 / 5 - 0 peringkat