Jadual Kandungan
Algoritma
Kaedah
Menggunakan XMLHttpRequest
Contoh
Gunakan Get API
Output
Kesimpulan
Rumah hujung hadapan web tutorial js Bagaimana untuk membuat permintaan HTTP segerak dalam JavaScript?

Bagaimana untuk membuat permintaan HTTP segerak dalam JavaScript?

Aug 30, 2023 pm 12:05 PM

如何在 JavaScript 中发出同步 HTTP 请求?

Dalam landskap digital semasa, tindakan membuat permintaan HTTP adalah bahagian penting dalam menghantar dan menerima data antara pelanggan dan pelayan. Permintaan tak segerak telah menjadi popular kerana ia memberikan pengalaman tanpa sekatan, yang akhirnya meningkatkan keseluruhan pengalaman pengguna. Walau bagaimanapun, dalam beberapa kes, permintaan HTTP segerak mungkin terbukti perlu atau lebih baik. Dalam naratif berikut, kami akan menyelidiki algoritma untuk membuat permintaan HTTP segerak menggunakan JavaScript. Kami juga akan meneroka dua pendekatan berbeza dan penjelasan kod yang sepadan dan aplikasi praktikalnya.

Algoritma

Untuk membuat permintaan HTTP segerak dalam JavaScript, algoritma asas mesti dilaksanakan yang merangkumi peringkat seterusnya -

  • Pertama, contoh menjana objek permintaan HTTP.

  • Kedua, laraskan permintaan dengan menyatakan metodologi, Uniform Resource Locator (URL) dan mendayakan mod penyegerakan permintaan.

  • Ketiga, hantar permintaan.

  • Keempat, tunggu balasan.

  • Akhir sekali, kendalikan respons dengan sewajarnya.

Kaedah

Menggunakan XMLHttpRequest

XMLHttpRequest ialah objek sedia ada dalam JavaScript yang telah digunakan sejak sekian lama. Walaupun ia telah digantikan oleh alternatif moden, ia masih melaksanakan permintaan HTTP segerak dengan sangat baik. Berikut ialah arahan tentang cara melaksanakan XMLHttpRequest -

function synchronousRequest(url) {
   const xhr = new XMLHttpRequest();
   xhr.open('GET', url, false);
   xhr.send(null);
   if (xhr.status === 200) {
      return xhr.responseText;
   } else {
      throw new Error('Request failed: ' + xhr.statusText);
   }
}
Salin selepas log masuk

Dalam contoh ini, kami mula-mula mencipta contoh XMLHttpRequest baharu. Seterusnya, kami memanggil kaedah open() untuk mengkonfigurasi permintaan. Parameter pertama ialah kaedah HTTP (GET), parameter kedua ialah URL, dan parameter ketiga ialah nilai Boolean yang menunjukkan sama ada permintaan itu harus tak segerak (palsu untuk permintaan segerak). Akhir sekali, kami menghantar permintaan menggunakan kaedah send() dan menunggu respons. Jika status adalah 200 (OK), kami mengembalikan teks respons jika tidak, kami membuang ralat.

Contoh

Gunakan fungsi synchronousRequest yang ditakrifkan sebelum ini -

try {
   const url = 'https://api.example.com/data';
   const responseData = synchronousRequest(url);
   console.log('Response data:', responseData);
} catch (error) {
   console.error('Error:', error.message);
}
Salin selepas log masuk

Dalam contoh ini, kami memanggil fungsi synchronousRequest menggunakan URL prototaip. Jika permintaan itu berjaya, kami akan log maklumat respons ke konsol. Walau bagaimanapun, jika ia gagal, kami log mesej ralat ke konsol.

Gunakan Get API

Fetch API ialah pengganti moden untuk XMLHttpRequest, direka bentuk untuk menjadi lebih fleksibel dan lebih mudah digunakan. Malangnya, fungsi native fetch() tidak menyokong permintaan segerak. Walau bagaimanapun, anda boleh menggunakan async/menunggu untuk mencipta gelagat seperti penyegerakan -

async function synchronousFetch(url) {
   const response = await fetch(url);
   if (response.ok) {
      const data = await response.text();
      return data;
   } else {
      throw new Error('Request failed: ' + response.statusText);
   }
}
Salin selepas log masuk

Dalam contoh ini, kami menggunakan fungsi fetch() untuk menyediakan Promise. Kami menggunakan kata kunci tunggu untuk menjeda pelaksanaan sehingga Janji tamat sebelum meneruskan dengan baris kod berikutnya. Jika respons memuaskan, kami mendapatkan semula teks respons jika tidak, kami mencetuskan ralat.

Contoh

Gunakan fungsi synchronousFetch yang ditakrifkan sebelum ini -

import React, { useEffect, useState } from "react";
import "./styles.css";
export default function App() {
   const [responseData, setResponseData] = useState(null);
   useEffect(() => {
      (async () => {
         try {
            const url = "https://jsonplaceholder.typicode.com/todos/1";
            const response = await fetch(url);
            if (!response.ok) {
               throw new Error(`HTTP error! Status: ${response.status}`);
            }
            const data = await response.json();
            setResponseData(data);
         } catch (error) {
            console.error("Error:", error.message);
         }
      })();
   }, []);
   return (
      <div className="App">
         <h1>API Data</h1>
         {responseData ? (
            <pre>{JSON.stringify(responseData, null, 2)}</pre>
         ) : (
            <p>Loading...</p>
         )}
      </div>
   );
}
Salin selepas log masuk

Output

API Data
{
   "userId": 1,
   "id": 1,
   "title": "delectus aut autem",
   "completed": false
}
Salin selepas log masuk

Dalam contoh ini, kami memanggil fungsi synchronousFetch dalam fungsi tak segerak untuk mengendalikan kata kunci tunggu dengan betul. Seperti dalam contoh sebelumnya, kami log data tindak balas ke konsol jika permintaan itu berjaya, jika tidak mesej ralat direkodkan.

Kesimpulan

Walaupun permintaan tak segerak sering diutamakan kerana sifat tidak menyekatnya, permintaan HTTP segerak dalam JavaScript masih mempunyai kes penggunaannya. Kami membincangkan algoritma untuk membuat permintaan HTTP segerak dan meneroka dua pendekatan berbeza, termasuk kaedah XMLHttpRequest yang lebih lama dan API Ambil yang lebih moden dengan async/menunggu. Perlu diingat bahawa permintaan segerak harus digunakan dengan berhati-hati, kerana ia boleh menyekat pelaksanaan kod JavaScript dan memberi kesan negatif kepada pengalaman pengguna.

Atas ialah kandungan terperinci Bagaimana untuk membuat permintaan HTTP segerak dalam JavaScript?. 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

Tag artikel 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)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

Ganti aksara rentetan dalam javascript

jQuery mendapatkan padding/margin elemen jQuery mendapatkan padding/margin elemen Mar 01, 2025 am 08:53 AM

jQuery mendapatkan padding/margin elemen

periksa jQuery jika tarikh sah periksa jQuery jika tarikh sah Mar 01, 2025 am 08:51 AM

periksa jQuery jika tarikh sah

10 Tab Accordion JQuery 10 Tab Accordion JQuery Mar 01, 2025 am 01:34 AM

10 Tab Accordion JQuery

10 patut diperiksa plugin jQuery 10 patut diperiksa plugin jQuery Mar 01, 2025 am 01:29 AM

10 patut diperiksa plugin jQuery

HTTP Debugging dengan Node dan HTTP-Console HTTP Debugging dengan Node dan HTTP-Console Mar 01, 2025 am 01:37 AM

HTTP Debugging dengan Node dan HTTP-Console

Tutorial Persediaan API Carian Google Custom Tutorial Persediaan API Carian Google Custom Mar 04, 2025 am 01:06 AM

Tutorial Persediaan API Carian Google Custom

jQuery tambah bar scroll ke div jQuery tambah bar scroll ke div Mar 01, 2025 am 01:30 AM

jQuery tambah bar scroll ke div

See all articles