Janji JavaScript adalah salah satu ciri yang paling dipuji. Komponen asynchronous asli terbina dalam dalam bahasa telah membuka era baru, yang bukan sahaja mengubah kaedah pengekodan kami, tetapi juga meletakkan asas untuk API yang kuat (seperti mengambil!).
Mari kita semak ciri -ciri yang dijanjikan oleh janji apabila ia mula -mula dikeluarkan dan ciri -ciri baru apa yang akan diperoleh seterusnya.
Tidak memahami konsep janji? Saya sangat mengesyorkan artikel Jake Archibald sebagai primer.
Ciri -ciri sedia ada
Mari kita lihat dengan cepat apa yang boleh anda lakukan sekarang dengan janji. Selepas JavaScript memperkenalkan janji, ia menyediakan API untuk melaksanakan operasi tak segerak dan bertindak balas terhadap kejayaan atau kegagalan mereka, cara untuk membuat persatuan di sekitar data atau hasil tertentu yang kita masih tidak tahu tentang nilai data atau hasil ini.
Berikut adalah ciri -ciri janji yang kita ada sekarang.
Mengendalikan janji
Apabila kaedah asynchronous mengembalikan janji (contohnya apabila menggunakan pengambilan), kita boleh menggunakan then()
untuk melakukan tindakan apabila janji itu dipenuhi (siap) dan menggunakan catch()
untuk bertindak balas terhadap janji yang ditolak (ditolak).
Ambil ('// Resource.to/Some/data') .then (result => console.log ('kami mendapatnya', result.json ())) .catch (error => console.error ('ralat berlaku', ralat))
Kes penggunaan klasik adalah untuk memanggil data dari API dan memuatkan data apabila ia kembali, atau untuk memaparkan mesej ralat jika data tidak dijumpai.
Selain itu, dalam versi awalnya, kami memperoleh dua kaedah mengendalikan kumpulan janji.
Menghuraikan dan menolak koleksi janji
Apabila janji itu berjaya dihuraikan, ia dapat dipenuhi ; Apabila ia dihuraikan dengan kesilapan, ia boleh ditolak ; Apabila ia tidak dihuraikan, ia berada dalam keadaan yang belum selesai . Apabila janji itu dihuraikan, ia dianggap siap tanpa mengira hasilnya.
Oleh itu, kami mempunyai dua cara untuk membantu tingkah laku kumpulan janji, bergantung kepada gabungan negara yang kami perolehi.
Promise.all
adalah salah satu kaedah. Ia hanya akan dipenuhi apabila semua janji berjaya dihuraikan dan mengembalikan array yang mengandungi hasil setiap janji. Sekiranya salah satu janji gagal, Promise.all
Semua akan memasuki catch
dan mengembalikan sebab kesilapan.
Janji.all ([[ Ambil ('// sumber.to/some/data'), Ambil ('// Resource.to/more/data') ]) .then (hasil => console.log ('kami mendapat pelbagai hasil', hasilnya))) .catch (error => console.error ('salah satu janji gagal', ralat))
Dalam kes ini, apabila salah satu daripada ahli koleksi membuang kesilapan, Promise.all
Semua litar pintas dan masukkan catch
, atau lengkap apabila semua janji dipenuhi .
Semak artikel pendek Domenic Denicola mengenai status janji untuk mengetahui lebih lanjut mengenai kata -kata dan konsepnya.
Kami juga mempunyai Promise.race
, yang segera menyelesaikan janji pertama yang diperolehnya, sama ada ia dipenuhi atau ditolak. Selepas janji pertama dihuraikan, janji -janji selebihnya akan diabaikan.
Janji.race ([ Ambil ('// sumber.to/some/data'), Ambil ('// Resource.to/Other/data') ]) .then (result => console.log ('janji pertama diselesaikan', hasil))) .catch (alasan => console.error ('salah satu janji gagal kerana', alasan))
Ciri -ciri baru
Ok, kita akan mengalih perhatian kita kepada ciri -ciri janji baru yang boleh kita harapkan.
Janji.allsettled
Cadangan seterusnya untuk menambah kepada keluarga janji adalah Promise.allSettled
, yang, seperti namanya, akan terus melaksanakan hanya jika semua ahli pengumpulan dalam array tidak lagi dalam keadaan yang belum selesai, sama ada mereka ditolak atau dipenuhi .
Janji.allsettled ([ Ambil ('// sumber.to/some/data'), Ambil ('// Resource.to/more/data'), Ambil ('// Resource.to/even/more/data') ]) .tua (hasil => { const dipenuhi = hasil.filter (r => r.status === 'dipenuhi') const ditolak = results.filter (r => r.status === 'ditolak') })
Perhatikan bahawa ini berbeza dari Promise.all
, kerana kita tidak akan memasuki pernyataan catch
. Ini bagus jika kita sedang menunggu dataset yang akan memasuki bahagian yang berbeza dari aplikasi web, tetapi ingin menyediakan e -mel yang lebih spesifik untuk setiap hasil atau melakukan tindakan yang berbeza.
Janji
Pendekatan baru yang akan datang adalah Promise.any
, Yang membolehkan kita bertindak balas terhadap sebarang janji yang dipenuhi dalam koleksi, tetapi hanya litar pintas jika semua janji gagal.
Janji.OW ([ Ambil ('// sumber.to/some/data'), Ambil ('// Resource.to/more/data'), Ambil ('// Resource.to/even/more/data') ]) .then (result => console.log ('kumpulan data telah tiba', hasilnya)) .catch (() => console.error ('semua janji gagal'))
Ini agak seperti Promise.race
kecuali Promise.race
. Oleh itu, jika janji pertama dalam koleksi itu dihuraikan dengan kesilapan, Promise.race
akan terus dilaksanakan. Promise.any
akan terus menunggu seluruh item dalam array untuk menghuraikan sebelum terus melaksanakan.
Demo
Sesetengah daripada mereka lebih mudah difahami menggunakan visualisasi, jadi saya mencipta taman permainan kecil yang menunjukkan perbezaan antara yang baru dan sedia ada. (Bahagian demo ditinggalkan di sini kerana teks asal tidak memberikan kod atau pautan tertentu)
Meringkaskan
Walaupun mereka masih berada di peringkat cadangan, skrip komuniti boleh mensimulasikan pendekatan baru yang dibentangkan dalam artikel ini. Sebagai contoh, any
dan reflect
Bluebird adalah polyfills yang baik yang kami tunggu penyemak imbas untuk menyokong penambahbaikan.
Mereka juga menunjukkan bagaimana masyarakat telah menggunakan corak tak segerak ini, tetapi membina mereka ke dalam bahasa membuka kemungkinan baru untuk pengambilan data dan parsing tak segerak dalam aplikasi web.
Di samping then
dan catch
, anda juga boleh lulus finally
menjanjikan, yang ditulis Sarah Drasner dalam artikel terperinci tentang yang anda boleh periksa. (Pautan ditinggalkan di sini)
Sekiranya anda ingin mengetahui tentang kombinator janji yang akan datang, blog V8 hanya mengeluarkan penjelasan ringkas dengan pautan kepada spesifikasi dan cadangan rasmi. (Pautan ditinggalkan di sini)
Atas ialah kandungan terperinci Mengintip kaedah baru yang datang ke janji. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Dalam jawatan ini, Blackle Mori menunjukkan kepada anda beberapa hacks yang ditemui semasa cuba menolak had sokongan HTML Cohost. Gunakan ini jika anda berani, supaya anda juga dilabelkan sebagai penjenayah CSS.

Kursor adat dengan CSS adalah hebat, tetapi kita boleh mengambil sesuatu ke peringkat seterusnya dengan JavaScript. Menggunakan JavaScript, kita boleh beralih antara negeri kursor, letakkan teks dinamik dalam kursor, gunakan animasi kompleks, dan gunakan penapis.

Animasi CSS interaktif dengan unsur -unsur yang menghilangkan satu sama lain kelihatan lebih masuk akal pada tahun 2025. Walaupun tidak perlu untuk melaksanakan pong dalam CSS, peningkatan fleksibiliti dan kuasa CSS mengukuhkan kecurigaan Lee '

Petua dan cara untuk menggunakan harta penapis latar belakang CSS ke antara muka pengguna gaya. Anda akan belajar bagaimana untuk meletakkan penapis latar belakang di antara pelbagai elemen, dan mengintegrasikannya dengan kesan grafik CSS yang lain untuk membuat reka bentuk yang rumit.

Nah, ternyata ciri-ciri animasi terbina dalam SVG ' s tidak pernah ditamatkan seperti yang dirancang. Pasti, CSS dan JavaScript lebih mampu membawa beban, tetapi ia baik untuk mengetahui bahawa SMIL tidak mati di dalam air seperti sebelumnya

Yay, let ' s melompat untuk teks-wrap: Pretty Landing dalam Pratonton Teknologi Safari! Tetapi berhati -hatilah bahawa ia ' s berbeza dari bagaimana ia berfungsi dalam pelayar kromium.

Kemas kini trik CSS ini menyoroti kemajuan yang ketara dalam almanak, penampilan podcast baru-baru ini, panduan kaunter CSS baru, dan penambahan beberapa penulis baru yang menyumbang kandungan berharga.

Kebanyakan masa, orang mempamerkan ciri-ciri Tailwind ' Apabila dipamerkan dengan cara ini, @apply tidak menjanjikan sama sekali. Jadi obvio


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini
