Rumah hujung hadapan web Soal Jawab bahagian hadapan nodejs meminta konkurensi antara muka pihak ketiga

nodejs meminta konkurensi antara muka pihak ketiga

May 08, 2023 pm 02:40 PM

Sebagai bahasa pengaturcaraan tak segerak JavaScript yang terbuka dan fleksibel, keupayaan pemprosesan tugas serentak Node.js yang berkuasa membawa kemungkinan tanpa had kepada pembangun. Terutama apabila meminta API atau antara muka pihak ketiga, kami sering memerlukan permintaan serentak untuk meningkatkan prestasi dan kelajuan tindak balas. Oleh itu, artikel ini akan menumpukan pada cara meminta pemprosesan serentak antara muka pihak ketiga dalam Node.

1. Node.js meminta antara muka pihak ketiga

Sebagai platform terbuka, Node.js boleh mengakses dan memproses HTTP, HTTPS, TCP, UDP, DNS dan protokol rangkaian lain. Dalam pembangunan sebenar, kami biasanya menggunakan Node.js untuk memulakan permintaan HTTP, menghantar data kepada antara muka pihak ketiga dan menerima hasil pulangan. Alat permintaan HTTP yang paling biasa digunakan dalam Node.js ialah modul http dan https.

1. Gunakan alat permintaan HTTP

Membina permintaan HTTP biasanya memerlukan menyatakan kaedah permintaan, pengepala permintaan, isi permintaan dan maklumat lain. Dalam Node.js, kami boleh membina permintaan HTTP dengan:

const http = require('http');
const options = {
   hostname: 'www.example.com',
   port: 80,
   path: '/api/getdata',
   method: 'GET',
   headers: {
       'Content-Type': 'application/json',
       'Authorization': 'Bearer XXXXXXXXXXXX'
   }
};

const req = http.request(options, (res) => {
   console.log(`状态码:${res.statusCode}`);
   res.setEncoding('utf8');
   res.on('data', (chunk) => {
       console.log(`响应主体:${chunk}`);
   });
   res.on('end', () => {
       console.log('响应中已无数据。');
   });
});

req.on('error', (e) => {
   console.error(`请求遇到问题:${e.message}`);
});

// 写入数据到请求主体
req.write('{"username":"hello","password":"world"}');
req.end();
Salin selepas log masuk

Dengan kaedah http.request(), kami boleh mencipta permintaan HTTP dan menggunakannya untuk berkomunikasi dengan pelayan. Kaedah ini mengandungi dua parameter: parameter pertama menentukan sasaran permintaan, yang merangkumi kaedah permintaan, pengepala permintaan, badan permintaan dan maklumat lain, parameter kedua ialah fungsi panggil balik yang digunakan untuk memproses objek tindak balas;

2. Gunakan alat permintaan https

Dalam permintaan HTTPS, teks sifir perlu dihantar, jadi kunci awam dan kunci peribadi perlu digunakan. Dalam Node.js, anda boleh menggunakan modul https untuk membuat permintaan HTTPS dengan sangat mudah, seperti yang ditunjukkan dalam contoh berikut:

const https = require('https');
const options = {
   hostname: 'www.example.com',
   port: 443,
   path: '/api/getdata',
   method: 'GET',
   headers: {
       'Content-Type': 'application/json',
       'Authorization': 'Bearer XXXXXXXXXXXX'
   }
};

const req = https.request(options, (res) => {
   console.log(`状态码:${res.statusCode}`);
   res.setEncoding('utf8');
   res.on('data', (chunk) => {
       console.log(`响应主体:${chunk}`);
   });
   res.on('end', () => {
       console.log('响应中已无数据。');
   });
});

req.on('error', (e) => {
   console.error(`请求遇到问题:${e.message}`);
});

// 写入数据到请求主体
req.write('{"username":"hello","password":"world"}');
req.end();
Salin selepas log masuk

2. Node.js meminta antara muka pihak ketiga pemprosesan serentak

dalam pembangunan sebenar , kecekapan satu permintaan akan menjadi agak rendah, kerana apabila meminta antara muka pihak ketiga, ia memerlukan banyak masa untuk menunggu respons. Menghantar berbilang permintaan pada masa yang sama boleh meningkatkan kecekapan pemprosesan data. Dalam Node.js, berbilang kaedah boleh digunakan untuk melaksanakan permintaan serentak, seperti Janji, async/menunggu, mendengar acara, dsb.

1. Kaedah Promise

Gunakan Promise.all() untuk membuat permintaan serentak, bungkus data permintaan ke dalam tatasusunan dan hantarkannya pada masa yang sama, dan kemudian tunggu semua permintaan untuk dibalas sebelum diproses, yang boleh meningkatkan kecekapan pemprosesan. Berikut ialah contoh mudah untuk menggambarkan pelaksanaan kaedah Promise:

const request = require('request-promise');

//多个请求
const requests = [
   request('https://api.example.com/1'),
   request('https://api.example.com/2'),
   request('https://api.example.com/3')
];

//并发处理多个请求
Promise.all(requests)
   .then((results) => {
       console.log('所有请求完成.');
       // 处理请求结果
   })
   .catch((error) => {
       console.error(`请求错误:${error}`);
   });
Salin selepas log masuk

2 kaedah async/wait

kaedah async/wait ialah alternatif kepada rantai Promise, yang membenarkan kod untuk melihat. Ia kelihatan lebih mudah dibaca dan ringkas. Apabila melaksanakan permintaan serentak, kami boleh menggunakan async/waiit untuk melaksanakan berbilang permintaan pada masa yang sama dan menunggu salah satu permintaan untuk mengembalikan data melalui Promise.race, seperti berikut:

const request = require('request-promise');

//多个请求
const requests = [
   request('https://api.example.com/1'),
   request('https://api.example.com/2'),
   request('https://api.example.com/3')
];

//异步处理多个请求
async function getMultipleData() {
   try {
       const result = await Promise.race(requests);
       console.log(`获取数据成功:${result}`);
   } catch (error) {
       console.error(`获取数据失败:${error}`);
   }
}

getMultipleData();
Salin selepas log masuk

3

Menggunakan mendengar acara ialah cara lain untuk mengendalikan permintaan serentak Dalam Node.js, EventEmitter ialah API standard untuk mengendalikan acara Melalui EventEmitter kami boleh menyesuaikan acara dan pencetus peristiwa. Berikut menunjukkan contoh penggunaan EventEmitter untuk memantau peristiwa kejayaan dan ralat:

const request = require('request');

const emitter = new EventEmitter();

// 多个请求
const urls = ['https://api.example.com/1', 'https://api.example.com/2', 'https://api.example.com/3'];
let counter = 0;

// 逐个请求,每个请求完成时触发success和error事件
for (let i = 0; i < urls.length; i++) {
   request(urls[i], (error, response, body) => {
       if (!error && response.statusCode === 200) {
           counter++;
           emitter.emit('success', body);
       } else {
           emitter.emit('error', error);
       }
   });
}

// 监听success和error事件
emitter.on('success', (data) => {
   console.log(data);
   // 按照计数器判断是否所有请求完成
   if (counter === urls.length) {
       console.log('所有请求完成.');
   }
});
emitter.on('error', (error) => {
   console.error(`请求遇到问题:${error}`);
});
Salin selepas log masuk

3. Ringkasan

Sebagai bahasa pengaturcaraan tak segerak, Node.js mempunyai keupayaan pemprosesan serentak yang kuat Digunakan untuk membuat permintaan serentak apabila meminta API atau antara muka pihak ketiga untuk meningkatkan prestasi dan kelajuan tindak balas. Artikel ini memfokuskan pada cara meminta pemprosesan serentak antara muka pihak ketiga dalam Node.js, menggunakan Janji, async/menunggu dan pemantauan acara untuk melaksanakan permintaan serentak. Dalam projek sebenar, anda perlu memilih cara terbaik untuk mengendalikan permintaan serentak berdasarkan keperluan sebenar untuk mencapai hasil yang terbaik.

Atas ialah kandungan terperinci nodejs meminta konkurensi antara muka pihak ketiga. 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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan 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)

Apa itu useeffect? Bagaimana anda menggunakannya untuk melakukan kesan sampingan? Apa itu useeffect? Bagaimana anda menggunakannya untuk melakukan kesan sampingan? Mar 19, 2025 pm 03:58 PM

Artikel ini membincangkan useeffect dalam React, cangkuk untuk menguruskan kesan sampingan seperti pengambilan data dan manipulasi DOM dalam komponen berfungsi. Ia menerangkan penggunaan, kesan sampingan yang biasa, dan pembersihan untuk mencegah masalah seperti kebocoran memori.

Bagaimanakah algoritma Rekonsiliasi React berfungsi? Bagaimanakah algoritma Rekonsiliasi React berfungsi? Mar 18, 2025 pm 01:58 PM

Artikel ini menerangkan algoritma perdamaian React, yang dengan cekap mengemas kini DOM dengan membandingkan pokok DOM maya. Ia membincangkan manfaat prestasi, teknik pengoptimuman, dan kesan terhadap pengalaman pengguna. Kira -kira: 159

Apakah fungsi pesanan yang lebih tinggi dalam JavaScript, dan bagaimana mereka boleh digunakan untuk menulis lebih banyak kod ringkas dan boleh diguna semula? Apakah fungsi pesanan yang lebih tinggi dalam JavaScript, dan bagaimana mereka boleh digunakan untuk menulis lebih banyak kod ringkas dan boleh diguna semula? Mar 18, 2025 pm 01:44 PM

Fungsi pesanan yang lebih tinggi dalam JavaScript meningkatkan ketabahan kod, kebolehgunaan semula, modulariti, dan prestasi melalui abstraksi, corak umum, dan teknik pengoptimuman.

Bagaimanakah kari bekerja di JavaScript, dan apakah faedahnya? Bagaimanakah kari bekerja di JavaScript, dan apakah faedahnya? Mar 18, 2025 pm 01:45 PM

Artikel ini membincangkan kari dalam JavaScript, teknik yang mengubah fungsi multi-argumen ke dalam urutan fungsi argumen tunggal. Ia meneroka pelaksanaan kari, faedah seperti aplikasi separa, dan kegunaan praktikal, meningkatkan kod baca

Bagaimana anda menyambungkan komponen React ke kedai Redux menggunakan Connect ()? Bagaimana anda menyambungkan komponen React ke kedai Redux menggunakan Connect ()? Mar 21, 2025 pm 06:23 PM

Artikel membincangkan penyambungan komponen reaksi ke kedai redux menggunakan Connect (), menerangkan MapStateToprops, MapdispatchToprops, dan kesan prestasi.

Apakah useContext? Bagaimana anda menggunakannya untuk berkongsi keadaan antara komponen? Apakah useContext? Bagaimana anda menggunakannya untuk berkongsi keadaan antara komponen? Mar 19, 2025 pm 03:59 PM

Artikel ini menerangkan USEContext dalam React, yang memudahkan pengurusan negara dengan mengelakkan penggerudian prop. Ia membincangkan faedah seperti keadaan terpusat dan penambahbaikan prestasi melalui pengurangan semula yang dikurangkan.

Bagaimana anda mengelakkan tingkah laku lalai di pengendali acara? Bagaimana anda mengelakkan tingkah laku lalai di pengendali acara? Mar 19, 2025 pm 04:10 PM

Artikel membincangkan menghalang tingkah laku lalai dalam pengendali acara menggunakan kaedah pencegahanDefault (), faedahnya seperti pengalaman pengguna yang dipertingkatkan, dan isu -isu yang berpotensi seperti kebimbangan aksesibiliti.

Apakah kelebihan dan kekurangan komponen terkawal dan tidak terkawal? Apakah kelebihan dan kekurangan komponen terkawal dan tidak terkawal? Mar 19, 2025 pm 04:16 PM

Artikel ini membincangkan kelebihan dan kekurangan komponen terkawal dan tidak terkawal dalam React, yang memberi tumpuan kepada aspek seperti ramalan, prestasi, dan kes penggunaan. Ia menasihatkan faktor -faktor yang perlu dipertimbangkan ketika memilih di antara mereka.

See all articles