cari
Rumahhujung hadapan webtutorial cssMengintip kaedah baru yang datang ke janji

Mengintip kaedah baru yang datang ke janji

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!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Helah CSS yang hilang cohost.orgHelah CSS yang hilang cohost.orgApr 25, 2025 am 09:51 AM

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.

Gaya CSS peringkat seterusnya untuk kursorGaya CSS peringkat seterusnya untuk kursorApr 23, 2025 am 11:04 AM

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.

Dunia bertembung: Pengesanan Perlanggaran Kerangka Key menggunakan pertanyaan gayaDunia bertembung: Pengesanan Perlanggaran Kerangka Key menggunakan pertanyaan gayaApr 23, 2025 am 10:42 AM

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 '

Menggunakan penapis latar belakang CSS untuk kesan UIMenggunakan penapis latar belakang CSS untuk kesan UIApr 23, 2025 am 10:20 AM

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.

SMIL ON?SMIL ON?Apr 23, 2025 am 09:57 AM

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

'Cantik' berada di mata penonton'Cantik' berada di mata penontonApr 23, 2025 am 09:40 AM

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.

CSS-Tricks Chronicles XLIIICSS-Tricks Chronicles XLIIIApr 23, 2025 am 09:35 AM

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.

Ciri tailwind ' s @ply lebih baik daripada bunyiCiri tailwind ' s @ply lebih baik daripada bunyiApr 23, 2025 am 09:23 AM

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

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

MinGW - GNU Minimalis untuk Windows

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

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