Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Cara menggunakan kaedah async untuk pengaturcaraan tak segerak dalam Node.js

Cara menggunakan kaedah async untuk pengaturcaraan tak segerak dalam Node.js

PHPz
PHPzasal
2023-04-17 15:00:37942semak imbas

Node.js ialah persekitaran masa jalan JavaScript yang dibina pada enjin JavaScript Chrome V8 Ia boleh melaksanakan operasi I/O tanpa sekatan dan dipacu peristiwa, jadi ia digunakan secara meluas dalam pembangunan web. Dalam Node.js, penggunaan kaedah tak segerak juga sangat penting. Melalui kaedah tak segerak, operasi data dan permintaan rangkaian boleh dilakukan dengan lebih cekap, dan kelebihan prestasi yang besar boleh diperolehi dalam aplikasi web berskala besar. Artikel ini akan memperkenalkan cara menggunakan kaedah async untuk pengaturcaraan tak segerak dalam Node.js.

1. Apakah kaedah async

Dalam Node.js, operasi tak segerak dilaksanakan melalui fungsi panggil balik. Kaedah tak segerak mula dilaksanakan selepas menerima permintaan dan tidak menyekat pelaksanaan kod berikutnya. Apabila operasi tak segerak tamat, fungsi panggil balik dilaksanakan dan hasilnya dihantar ke fungsi panggil balik untuk pemprosesan selanjutnya.

Sebagai contoh, dalam Node.js, operasi membaca fail biasanya menggunakan kaedah readFile modul fs dan menggunakan fungsi panggil balik untuk memproses data baca.

const fs = require('fs');

fs.readFile('test.txt', (err, data) => {
    if (err) throw err;
    console.log(data);
});

Kod di atas ialah kaedah tak segerak Selepas membaca data, fungsi panggil balik dilaksanakan untuk memproses data. Walau bagaimanapun, jika kita perlu memanggil berbilang kaedah tak segerak secara berterusan, bagaimana untuk memastikan perintah pelaksanaan dan pemprosesan hasil mereka? Pada masa ini, anda perlu menggunakan kaedah async.

async ialah alat kawalan proses untuk operasi tak segerak, yang membenarkan berbilang operasi tak segerak dilaksanakan dalam susunan tertentu dan boleh mengendalikan pengecualian semasa pelaksanaan operasi tak segerak. Melalui async, bukan sahaja kaedah asynchronous boleh dilaksanakan mengikut tertib, tetapi juga kod boleh dibuat lebih ringkas dan mudah difahami.

2. Kaedah biasa dalam tak segerak

  1. kaedah async.waterfall

kaedah async.waterfall membenarkan berbilang operasi tak segerak dilaksanakan mengikut turutan dan Lulus keputusan satu operasi tak segerak kepada operasi tak segerak seterusnya. Penggunaannya adalah seperti berikut:

async.waterfall([
    (callback) => {
        // 异步操作一
        callback(null, 'one', 'two');
    },
    (arg1, arg2, callback) => {
        // 异步操作二
        callback(null, 'three');
    },
    (arg1, callback) => {
        // 异步操作三
        callback(null, 'done');
    }
], (err, result) => {
    if (err) throw err;
    console.log(result);
});

Dalam kod di atas, kami mentakrifkan tiga operasi tak segerak dan panggil balik akan dipanggil untuk mengembalikan hasil dalam setiap operasi tak segerak. Dalam fungsi panggil balik, parameter pertama mewakili maklumat ralat, atau batal jika tiada ralat, dan parameter seterusnya ialah parameter yang perlu dihantar ke operasi tak segerak seterusnya. Dalam fungsi panggil balik terakhir, hasilnya akan dihantar untuk diproses.

  1. kaedah async.series

kaedah async.series digunakan untuk melaksanakan berbilang operasi tak segerak dalam turutan dan hasil setiap operasi tak segerak akan dihantar ke operasi seterusnya . Penggunaannya adalah seperti berikut:

async.series([
    (callback) => {
        // 异步操作一
        callback(null, 'one');
    },
    (callback) => {
        // 异步操作二
        callback(null, 'two');
    },
    (callback) => {
        // 异步操作三
        callback(null, 'three');
    }
], (err, result) => {
    if (err) throw err;
    console.log(result);
});

Dalam kod di atas, kami mentakrifkan tiga operasi tak segerak, setiap operasi tak segerak akan mengembalikan hasil operasi tak segerak. Dalam fungsi panggil balik terakhir, semua keputusan akan dihantar untuk diproses.

  1. kaedah async.parallel

Kaedah async.parallel digunakan untuk melaksanakan berbilang operasi tak segerak secara selari. Penggunaannya adalah seperti berikut:

async.parallel([
    (callback) => {
        // 异步操作一
        callback(null, 'one');
    },
    (callback) => {
        // 异步操作二
        callback(null, 'two');
    },
    (callback) => {
        // 异步操作三
        callback(null, 'three');
    }
], (err, result) => {
    if (err) throw err;
    console.log(result);
});

Dalam kod di atas, kami mentakrifkan tiga operasi tak segerak, dan ketiga-tiga operasi ini dilaksanakan secara selari. Dalam fungsi panggil balik terakhir, semua keputusan akan dihantar untuk diproses.

  1. async.setiap kaedah

async.setiap kaedah digunakan untuk melintasi tatasusunan atau objek dan melakukan operasi tak segerak pada setiap elemen. Selepas setiap operasi tak segerak dilaksanakan, fungsi panggil balik dipanggil. Jika terdapat ralat, ia akan melompat keluar serta-merta dan mengembalikan mesej ralat. Penggunaannya adalah seperti berikut:

async.each(['file1', 'file2', 'file3'], (item, callback) =>{
    // 异步操作
    callback(null);
}, (err) => {
    if (err) throw err;
    console.log('done');
});

Dalam kod di atas, kami melintasi tatasusunan rentetan dan melakukan operasi tak segerak pada setiap elemen. Dalam fungsi panggil balik terakhir, semua keputusan akan dihantar untuk diproses.

3. Ringkasan

Menggunakan kaedah tak segerak, berbilang operasi tak segerak boleh dilaksanakan dalam susunan tertentu dan pengecualian yang berlaku semasa pelaksanaan operasi tak segerak boleh dikendalikan. Dalam Node.js, pengaturcaraan tak segerak adalah sangat penting kerana ia boleh melaksanakan operasi data dan permintaan rangkaian dengan lebih cekap, yang boleh memperoleh kelebihan prestasi yang besar dalam aplikasi web berskala besar. Mempelajari pengaturcaraan tak segerak dengan baik ialah asas penting untuk menjadi pembangun Node.js yang cemerlang.

Atas ialah kandungan terperinci Cara menggunakan kaedah async untuk pengaturcaraan tak segerak dalam Node.js. 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