Rumah hujung hadapan web tutorial js ✅Apakah perbezaan antara fetch dan XMLHTTPRequest?

✅Apakah perbezaan antara fetch dan XMLHTTPRequest?

Nov 15, 2024 pm 01:22 PM

Hello semua! Semasa mengerjakan projek yang menarik, saya mempunyai idea untuk memberitahu tentang perbezaan antara fetch dan XMLHTTPRequest. Sebenarnya, soalan itu kedengaran agak menarik jika anda tahu sejarah penciptaannya, dalam erti kata ia sedikit tidak betul, tetapi anda masih perlu tahu mengenainya, kerana, katakan, bagi saya sebagai pemaju, apabila saya berurusan dengan pelbagai jenis API setiap hari, adalah berguna untuk mengetahui agar tidak membuat kod yang tidak diperlukan.

Apakah itu XMLHTTPRequest dan sejarah ringkas penciptaannya

Dalam javascript, objek XMLHttpRequest digunakan untuk berinteraksi dengan pelayan. Anda boleh mendapatkan semula data daripada URL tanpa perlu melakukan muat semula halaman penuh. Ini membolehkan halaman Web mengemas kini hanya sebahagian daripada halaman tanpa mengganggu apa yang pengguna lakukan. Tetapi secara amnya, secara terang-terangan, ia adalah API. Dan apabila kami mendengar ini, kami serta-merta mengingati konsep gelung acara, tak segerak (apabila pelaksanaan kod akan selesai selepas masa tertentu), dll. Contohnya, kod menggunakan XMLHTTPRequest kelihatan seperti ini:

const xhr = new XMLHttpRequest();
// method, URL, [isAsync, user, password]
xhr.open("GET", "/api/getPage");
// body
xhr.send()
Salin selepas log masuk
Salin selepas log masuk

Sejarah penciptaan XMLHTTPRequest sendiri membawa kita kembali ke tahun-tahun yang jauh apabila dinosaur berjalan... Okay, gurau je. Malah, API ini mula-mula dibangunkan oleh Microsoft dan telah diperkenalkan dalam komponen Outlook pada web produk perisian Microsoft Exchange Server 2000.

✅What is the difference between fetch and XMLHTTPRequest?

Pada masa itu, ia dipanggil secara berbeza - IXMLHTTPRequest dan sedikit, jika seseorang boleh mengatakan demikian dalam versi pertama antara muka, berbeza daripada yang sekarang. Iaitu, asasnya jelas kekal, tetapi jelas bahawa pelarasan telah dibuat selama 25 tahun. Kemudian, ia telah ditambahkan pada MSXML 2.0, malah kemudiannya, ke Internet Explorer 5 pada Mac 1999.

Kemudian, pengaturcara Mozilla membangunkan versi API mereka sendiri berdasarkan IXMLHTTPRequest, kemudian dipanggil nsIXMLHttpRequest, dan menjadikannya boleh diakses melalui XMLHttpRequest kesayangan kami. Semua ini telah ditambahkan pada Gecko versi 0.6 pada Disember 2000 (Gecko ialah enjin pelayar yang digunakan dalam FireFox dan banyak tempat lain). Pada masa itu, tiada perkara seperti FireFox, kerana versi pertamanya dikeluarkan pada September 2002 dan dipanggil Phoenix, kemudian FireBird dan hanya pada tahun 2004 FireFox. Kemudian, sebelum semua ini, terdapat Netscape Navigator, tetapi konfrontasi dengan Internet Explorer dan itu sahaja - itu cerita lain, yang tidak ada gunanya ditulis dalam artikel ini. Kemudian, sokongan telah ditambahkan pada Safari, Opera dan penyemak imbas lain. Oleh itu, apabila orang memberitahu anda bahawa objek ini digunakan untuk keserasian dengan pelayar lama, maka sudah tentu mereka betul, kerana ia membawa kita ke akhir 90-an, ketika pembangunan web baru dibangunkan. Anda juga boleh mengingati masa gelembung dotcom, tetapi, diakui, ia lebih awal sedikit, atau pada masa itu (jika kita menggunakan Internet Explorer), tetapi begitu juga ketika itu.

Jadi apa bezanya?

Jadi, kembali kepada soalan tentang perbezaan, perbezaan yang paling penting sudah tersembunyi dalam sejarah, kerana XMLHTTPRequest hanyalah API lama tetapi disokong, dan fetch hanyalah API baharu, yang jenis menggantikannya. Sehingga hari ini, XMLHTTPRequest 2.0 telah dikeluarkan pada Januari 2012, tetapi edisi terkini standard 1.0 telah dikeluarkan pada bulan Disember tahun yang sama. Ini ialah standard semasa untuk objek ini. Tetapi sekarang bayangkan wajah pembangun yang menulis ini sepanjang masa:

const xhr = new XMLHttpRequest();
// method, URL, [isAsync, user, password]
xhr.open("GET", "/api/getPage");
// body
xhr.send()
Salin selepas log masuk
Salin selepas log masuk

bukan ini

var xhr = new XMLHttpRequest();
xhr.open('GET', '/api/getData', true);

xhr.onload = function () {
    if (xhr.status >= 200 && xhr.status < 300) {
        var data = JSON.parse(xhr.responseText);
        console.log(data);
    } else {
        console.error('Request failed with status:', xhr.status);
    }
};

xhr.onerror = function () {
    console.error('There was a network error.');
};

xhr.send();
Salin selepas log masuk

beberapa tahun lalu. Itu sahaja yang terlintas di fikiran serta-merta.

✅What is the difference between fetch and XMLHTTPRequest?

Tetapi serius, berikut ialah senarai pendek perbezaan:

  1. Berorientasikan janji: API Ambil menggunakan janji, yang menjadikannya lebih mudah untuk bekerja dengan kod tak segerak dan membolehkan anda menggunakan binaan mudah seperti .then() dan async serta menunggu.

  2. Antara muka ringkas: API Ambil mempunyai sintaks yang lebih ringkas dan intuitif. Contohnya, untuk membuat permintaan, anda tidak perlu mencipta objek dan menetapkan sifatnya, seperti yang berlaku dengan XHR.

  3. Sokongan untuk ciri baharu: API Ambil menyokong ciri baharu seperti objek Permintaan dan Respons, yang menyediakan kaedah mudah untuk bekerja dengan permintaan, respons dan transformasinya.

  4. Sokongan untuk strim: API Ambil menyokong data penstriman, yang membolehkan anda bekerja dengan jumlah data yang besar semasa ia diterima.

  5. Membatalkan permintaan: Walaupun API Ambil tidak mempunyai sokongan terbina dalam untuk membatalkan permintaan, anda boleh menggunakan pengawal batal untuk berbuat demikian, yang menjadikan pengurusan permintaan lebih fleksibel.

  6. Penyesuaian yang dipertingkatkan: API Ambil menyediakan lebih banyak pilihan untuk mengkonfigurasi permintaan, seperti menetapkan pengepala, mod caching dan parameter lain.

  7. sokongan cors: API Fetch menyediakan lebih fleksibiliti dalam bekerja dengan CORS (Perkongsian Sumber Silang Asal), yang membolehkan konfigurasi permintaan yang lebih fleksibel kepada sumber daripada domain lain.

  8. Pengendalian ralat yang lebih baik: Apabila bekerja dengan API Ambil, anda boleh mengendalikan status respons dengan lebih baik, kerana ralat permintaan (cth. rangkaian tidak tersedia) akan menolak janji, manakala respons yang berjaya dengan kod 4xx atau 5xx tidak akan menolaknya dan anda perlu menyemak sendiri kod status.

✅What is the difference between fetch and XMLHTTPRequest?
Ini sudah tentu bukan saya, tetapi ia hanya gambar yang keren

Dan, sudah tentu, terdapat banyak lagi perbezaan, tetapi saya tidak nampak guna menyenaraikannya sekarang, kerana mengikut semua parameter, jelas bahawa ini hanyalah versi yang lebih baik daripada standard lama untuk keperluan penyemak imbas moden.

Akhir kata

Pada mulanya saya terfikir untuk menulis satu baris yang mengambil adalah standard yang lebih baharu, tetapi ia akan menjadi terlalu mudah dan tidak bermaklumat, sedangkan sebenarnya terdapat banyak perkara menarik di sana yang boleh diberitahu. Anda boleh menulis keseluruhan artikel tentang fetch sahaja, tetapi tiada perkara khusus dalam artikel ini. Tetapi, secara keseluruhan, pada pendapat saya, semuanya nampak ok.

Terima kasih banyak kerana membaca artikel!

P. S.

Sebenarnya, projek ini ialah HMPL. Ia adalah bahasa templat kecil untuk memaparkan UI dari pelayan ke pelanggan. Alangkah baiknya jika anda boleh menilai projek ini dengan bintang. Terima kasih!

Bintang HMPL

Atas ialah kandungan terperinci ✅Apakah perbezaan antara fetch dan XMLHTTPRequest?. 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!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Topik panas

Tutorial Java
1665
14
Tutorial PHP
1269
29
Tutorial C#
1249
24
Enjin JavaScript: Membandingkan Pelaksanaan Enjin JavaScript: Membandingkan Pelaksanaan Apr 13, 2025 am 12:05 AM

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Apr 14, 2025 am 12:05 AM

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

JavaScript dan Web: Fungsi teras dan kes penggunaan JavaScript dan Web: Fungsi teras dan kes penggunaan Apr 18, 2025 am 12:19 AM

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

JavaScript in Action: Contoh dan projek dunia nyata JavaScript in Action: Contoh dan projek dunia nyata Apr 19, 2025 am 12:13 AM

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Memahami Enjin JavaScript: Butiran Pelaksanaan Memahami Enjin JavaScript: Butiran Pelaksanaan Apr 17, 2025 am 12:05 AM

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Apr 15, 2025 am 12:16 AM

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Python vs JavaScript: Persekitaran dan Alat Pembangunan Python vs JavaScript: Persekitaran dan Alat Pembangunan Apr 26, 2025 am 12:09 AM

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.

See all articles