Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Bagaimana untuk melaksanakan asynchronous dalam javascript

Bagaimana untuk melaksanakan asynchronous dalam javascript

PHPz
PHPzasal
2023-05-20 19:25:051708semak imbas

JavaScript ialah bahasa pengaturcaraan yang biasa digunakan dan digunakan secara meluas dalam pembangunan web, pembangunan permainan dan bidang lain. Dalam pengaturcaraan JavaScript, pengaturcaraan tak segerak ialah teknologi penting yang boleh meningkatkan prestasi dan kelajuan tindak balas program. Jadi, bagaimanakah JavaScript melaksanakan pengaturcaraan tak segerak? Artikel ini akan menerangkan dari aspek berikut.

1. Gambaran keseluruhan pengaturcaraan tak segerak

Untuk memahami secara mendalam pengaturcaraan tak segerak dalam JavaScript, anda perlu menjelaskan konsep pengaturcaraan tak segerak. Pengaturcaraan tak segerak bermaksud apabila atur cara melakukan tindakan tertentu, ia boleh melakukan tindakan lain pada masa yang sama tanpa menunggu tindakan selesai. Konsep ini sangat berguna untuk program berbilang benang dan situasi di mana masa menunggu semasa menunggu data adalah sangat lama. Pengaturcaraan tak segerak ialah penyelesaian yang baik dalam situasi ini.

Dalam JavaScript, terdapat dua cara utama pengaturcaraan tak segerak: fungsi panggil balik dan Janji.

2. Fungsi panggil balik untuk melaksanakan asynchronous

Fungsi panggil balik ialah cara yang paling biasa digunakan untuk melaksanakan pengaturcaraan tak segerak dalam JavaScript. Fungsi panggil balik biasanya dihantar sebagai parameter kepada fungsi tak segerak Selepas fungsi tak segerak dilaksanakan, hasilnya dikembalikan melalui fungsi panggil balik. Berikut ialah contoh kod yang menggunakan fungsi panggil balik untuk mencapai pelaksanaan tak segerak:

function asyncFunction(callback) {
    setTimeout(function() {
        callback('hello world');
    }, 1000);
}

asyncFunction(function(result) {
    console.log(result);
});

Dalam kod di atas, fungsi tak segerak bernama asyncFunction pertama kali ditakrifkan, yang lulus dalam fungsi panggil balik sebagai parameter. Dalam fungsi tersebut, operasi tak segerak disimulasikan menggunakan fungsi setTimeout dan rentetan 'hello world' diluluskan sebagai parameter fungsi panggil balik selepas 1000 milisaat. Selepas pelaksanaan fungsi selesai, hasilnya dikembalikan melalui fungsi panggil balik. Akhir sekali, gunakan fungsi asyncFunction dan masukkan fungsi panggil balik untuk mendapatkan hasil operasi tak segerak.

Kelebihan fungsi panggil balik tak segerak ialah ia agak mudah dan mudah digunakan, tetapi terdapat masalah dengan kaedah ini: neraka panggil balik. Jika berbilang operasi tak segerak hendak disambungkan secara bersiri, berbilang fungsi panggil balik mesti disarang, menyebabkan kebolehbacaan kod berkurangan dan kesukaran dalam penyelenggaraan.

3. Promise melaksanakan pelaksanaan tak segerak

Untuk menyelesaikan masalah neraka panggil balik, ES6 memperkenalkan Promise. Promise ialah teknologi yang menyelesaikan pengaturcaraan tak segerak dan menjadikan kod tak segerak lebih elegan dan ringkas. Berikut ialah contoh kod untuk menggunakan Promise untuk mencapai pelaksanaan tak segerak:

function asyncFunction() {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            resolve('hello world');
        }, 1000);
    });
}

asyncFunction().then(function(result) {
    console.log(result);
});

Dalam kod di atas, asyncFunction mengembalikan objek Promise. Dalam Promise, gunakan fungsi resolve untuk mengembalikan hasil yang berjaya, gunakan fungsi reject untuk mengembalikan hasil kegagalan dan panggil semula hasil operasi tak segerak ke luar melalui kaedah then.

Berbanding dengan fungsi panggil balik, Promise mempunyai kelebihan berikut:

  1. Menggunakan kaedah itu boleh mengendalikan keputusan kejayaan dan kegagalan secara berasingan
  2. menyokong panggilan berantai , mengelakkan panggilan balik neraka;
  3. boleh menggabungkan berbilang operasi tak segerak dalam susunan tertentu;
  4. menyokong pelaksanaan serentak beberapa tugas tak segerak dan menunggu semua keputusan dikembalikan sebelum meneruskan ke langkah seterusnya.

4. async/wait melaksanakan pelaksanaan asynchronous

Selain Promise, ES8 memperkenalkan dua kata kunci baharu, async dan await. async digunakan untuk mengisytiharkan fungsi tak segerak, yang mengembalikan objek Janji menunggu digunakan untuk menunggu hasil objek Janji. async/await ialah kaedah pengaturcaraan tak segerak yang lebih elegan yang boleh menggantikan fungsi panggil balik dan kemudian kaedah. Berikut ialah contoh kod yang menggunakan tak segerak/menunggu untuk mencapai pelaksanaan tak segerak:

function asyncFunction() {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            resolve('hello world');
        }, 1000);
    });
}

async function test() {
    const result = await asyncFunction();
    console.log(result);
}

test();

Dalam kod di atas, ujian fungsi tak segerak ditakrifkan, yang menunggu keputusan fungsi tak segerak melalui menunggu, dan kemudian menggunakan hasil yang diperoleh untuk beroperasi.

Kelebihan async/wait berbanding Promise ialah ia lebih fleksibel dan mudah, dan struktur kodnya lebih jelas Untuk senario yang perlu mengendalikan berbilang tugas tak segerak, async/wait juga lebih mudah dan intuitif. .

5. Ringkasan

pengaturcaraan tak segerak JavaScript ialah salah satu teknologi penting dalam pembangunan web moden dan sangat berguna untuk meningkatkan prestasi program dan kelajuan tindak balas. Artikel ini memperkenalkan cara JavaScript melaksanakan pengaturcaraan tak segerak melalui fungsi panggil balik, Janji dan kata kunci async/menunggu. Ia adalah perlu untuk memilih kaedah pengaturcaraan tak segerak yang sesuai mengikut keperluan dan senario tertentu.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan asynchronous dalam javascript. 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