Jadual Kandungan
async Kata kunci
await Kata kunci
cara yang berbeza untuk mengisytiharkan fungsi asynchronous
Rumah hujung hadapan web tutorial js Panduan pemula ' s ke JavaScript async/menunggu, dengan contoh

Panduan pemula ' s ke JavaScript async/menunggu, dengan contoh

Feb 09, 2025 am 09:47 AM

A Beginner's Guide to JavaScript async/await, with Examples

Operasi Asynchronous Master JavaScript: Async/menunggu penjelasan terperinci

Artikel ini meneroka mendalam

/async dalam JavaScript, mengajar anda bagaimana untuk mengawal operasi tak segerak secara efisien dan menulis lebih jelas dan lebih mudah dibaca kod. await

mata teras:

  • /async Dalam JavaScript memudahkan pemprosesan operasi asynchronous, menjadikan kod itu kelihatan seperti dilaksanakan secara serentak, tetapi masih tidak menyekat. await Fungsi
  • mengembalikan janji, dan kata kunci async menghentikan pelaksanaan fungsi sehingga janji diselesaikan, dengan itu meningkatkan kebolehbacaan kod dan kawalan aliran. await Pengendalian ralat fungsi
  • boleh diuruskan dengan cekap menggunakan async/try blok atau catch kaedah. Promise catch() Gunakan
  • untuk mengoptimumkan perintah asynchronous berjalan selari, yang membolehkan berbilang
  • diselesaikan secara serentak dan bukannya dilaksanakan secara berurutan. Promise.all Promise Async Iterators dan
  • gelung membenarkan pemprosesan yang betul
  • fungsi dalam gelung, memastikan urutan pelaksanaan yang betul dan pengurusan prestasi yang lebih baik. for...of async Lapisan atas yang diperkenalkan oleh ES2022 membolehkan penggunaan
  • pada lapisan atas modul ES, memudahkan integrasi kod asynchronous tanpa memerlukan pembungkus tambahan.
  • await Ringkasan Kandungan Kandungan: await

bagaimana membuat fungsi asynchronous JavaScript

Kata kunci
    • Kata kunci
    • async cara yang berbeza untuk mengisytiharkan fungsi asynchronous
    • await
    • javascript
    • /
    • Janji penggunaan bawah tanah
  1. beralih dari janji ke
  2. /await async
    • async pengendalian ralat dalam fungsi asynchronous await
    • kaedah
    menggunakan panggilan fungsi
    • catch() Jalankan arahan Asynchronous secara selari
    Asynchronous dalam gelung segerak
  3. Tahap Atas
  4. await
  5. menulis kod asynchronous dengan yakin
  6. await
  7. Dalam JavaScript, beberapa operasi tidak segerak. Ini bermakna hasil atau nilai yang mereka hasilkan tidak akan segera tersedia.
  8. Pertimbangkan kod berikut:

JavaScript Interpreter tidak menunggu fungsi Asynchronous

untuk disiapkan sebelum melaksanakan pernyataan seterusnya. Oleh itu, ia akan merekodkan data sebenar yang dikembalikan oleh API

.

function fetchDataFromApi() {
  // 数据获取逻辑
  console.log(data);
}

fetchDataFromApi();
console.log('数据获取完成');
Salin selepas log masuk
Salin selepas log masuk
Dalam banyak kes, ini bukanlah tingkah laku yang diharapkan. Mujurlah, kita boleh menggunakan kata kunci

dan fetchDataFromApi untuk membuat program kami menunggu operasi tak segerak untuk disiapkan sebelum terus melaksanakan. 数据获取完成

Ciri ini memperkenalkan JavaScript dalam ES2017 dan disokong oleh semua pelayar moden.

async await bagaimana untuk membuat fungsi asynchronous JavaScript

Mari kita lihat lebih dekat pada logik pemerolehan data dalam fungsi

. Data pengambilan dalam JavaScript adalah contoh utama operasi tak segerak. Menggunakan API Fetch, kita boleh melakukan ini:

function fetchDataFromApi() {
  // 数据获取逻辑
  console.log(data);
}

fetchDataFromApi();
console.log('数据获取完成');
Salin selepas log masuk
Salin selepas log masuk

di sini, kita mendapat jenaka pengaturcaraan dari Jokeapi. Tanggapan API adalah dalam format JSON, jadi selepas permintaan selesai (menggunakan kaedah json()) kami mengekstrak tindak balas dan kemudian log jenaka ke konsol.

Sila ambil perhatian bahawa Jokeapi adalah API pihak ketiga, jadi kami tidak dapat menjamin kualiti lelucon yang kami kembali!

Jika kita menjalankan kod ini dalam penyemak imbas atau dalam nod (versi 17.5 menggunakan bendera --experimental-fetch), kita melihat bahawa konsol masih melengkapkan kandungan dalam urutan yang salah.

mari kita ubahnya.

async Kata kunci

Perkara pertama yang perlu kita lakukan ialah menandakan fungsi termasuk sebagai fungsi tak segerak. Kita boleh melakukan ini menggunakan kata kunci async, dan kita meletakkannya di hadapan kata kunci function:

function fetchDataFromApi() {
  fetch('https://v2.jokeapi.dev/joke/Programming?type=single')
    .then(res => res.json())
    .then(json => console.log(json.joke));
}

fetchDataFromApi();
console.log('数据获取完成');
Salin selepas log masuk

fungsi async selalu mengembalikan janji (lebih lanjut mengenai ini kemudian), jadi hanya pautan then() ke panggilan fungsi untuk mendapatkan perintah pelaksanaan yang betul:

async function fetchDataFromApi() {
  fetch('https://v2.jokeapi.dev/joke/Programming?type=single')
    .then(res => res.json())
    .then(json => console.log(json.joke));
}
Salin selepas log masuk

Jika kita menjalankan kod sekarang, kita akan melihat sesuatu seperti ini:

fetchDataFromApi()
  .then(() => {
    console.log('数据获取完成');
  });
Salin selepas log masuk

tetapi kami tidak mahu melakukan ini! Sintaks janji JavaScript boleh menjadi agak rumit, dan di mana async/await berkelip: ia membolehkan kita menulis kod asynchronous menggunakan sintaks yang kelihatan lebih seperti kod segerak, dan lebih mudah dibaca.

await Kata kunci

Perkara seterusnya yang perlu dilakukan adalah untuk mendahului mana -mana operasi tak segerak dalam fungsi dengan kata kunci await. Ini akan memaksa jurubahasa JavaScript untuk "menjeda" pelaksanaan dan menunggu hasilnya. Kita boleh menetapkan hasil operasi ini kepada pembolehubah:

<code>程序员的浪漫:一行代码解决千行代码的bug。
数据获取完成</code>
Salin selepas log masuk

kita juga perlu menunggu hasil memanggil fungsi fetchDataFromApi:

async function fetchDataFromApi() {
  const res = await fetch('https://v2.jokeapi.dev/joke/Programming?type=single');
  const json = await res.json();
  console.log(json.joke);
}
Salin selepas log masuk

Malangnya, jika kita cuba menjalankan kod sekarang, kita akan menghadapi ralat:

await fetchDataFromApi();
console.log('数据获取完成');
Salin selepas log masuk

Ini kerana kita tidak boleh menggunakan async di luar fungsi await dalam skrip bukan modul. Kami akan merangkumi ini dengan lebih terperinci kemudian, tetapi sekarang cara paling mudah untuk menyelesaikan masalah ini adalah untuk membungkus kod panggilan dengan fungsinya sendiri, yang juga kami tandakan sebagai async:

<code>Uncaught SyntaxError: await is only valid in async functions, async generators and modules</code>
Salin selepas log masuk

Jika kita menjalankan kod sekarang, semuanya harus dikeluarkan mengikut urutan yang betul:

async function fetchDataFromApi() {
  const res = await fetch('https://v2.jokeapi.dev/joke/Programming?type=single');
  const json = await res.json();
  console.log(json.joke);
}

async function init() {
  await fetchDataFromApi();
  console.log('数据获取完成');
}

init();
Salin selepas log masuk

Hakikat bahawa kita memerlukan kod boilerplate tambahan ini adalah malang, tetapi pada pendapat saya kod itu masih lebih mudah dibaca daripada versi berasaskan janji.

cara yang berbeza untuk mengisytiharkan fungsi asynchronous

Contoh sebelumnya menggunakan dua pengisytiharan fungsi bernama (kata kunci function diikuti dengan nama fungsi), tetapi kami tidak terhad kepada ini. Kami juga boleh menandakan ekspresi fungsi, fungsi anak panah, dan fungsi tanpa nama sebagai async.

Jika anda ingin menyemak perbezaan antara pengisytiharan fungsi dan ekspresi fungsi, lihat panduan kami

(kandungan berikut adalah sama. Tulis semula perenggan mengikut perenggan mengikut teks asal, mengekalkan makna asal, dan menyesuaikan gaya bahasa untuk menjadikannya lebih lancar dan lebih semula jadi)

Atas ialah kandungan terperinci Panduan pemula ' s ke JavaScript async/menunggu, dengan contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

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

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apr 04, 2025 pm 02:42 PM

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Demystifying JavaScript: Apa yang berlaku dan mengapa penting Demystifying JavaScript: Apa yang berlaku dan mengapa penting Apr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Siapa yang dibayar lebih banyak Python atau JavaScript? Siapa yang dibayar lebih banyak Python atau JavaScript? Apr 04, 2025 am 12:09 AM

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Adakah JavaScript sukar belajar? Adakah JavaScript sukar belajar? Apr 03, 2025 am 12:20 AM

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido?
atau:
Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido? atau: Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Apr 04, 2025 pm 05:36 PM

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Apr 04, 2025 pm 05:09 PM

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Apr 10, 2025 am 09:33 AM

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Perbezaan dalam Konsol.Log Output Result: Mengapa kedua -dua panggilan berbeza? Perbezaan dalam Konsol.Log Output Result: Mengapa kedua -dua panggilan berbeza? Apr 04, 2025 pm 05:12 PM

Perbincangan mendalam mengenai punca-punca utama perbezaan dalam output konsol.log. Artikel ini akan menganalisis perbezaan hasil output fungsi Console.log dalam sekeping kod dan menerangkan sebab -sebab di belakangnya. � ...

See all articles