簡體   English   中英

如何從客戶端向服務器發出異步請求?

[英]how to make async requests from client to server?

想要從客戶端到服務器發出一些異步請求。

我使用 http 模塊設置本地服務器,並將此功能導出到主應用程序文件。 在客戶端文件中,我編寫了發出 http 請求的函數,並多次調用此函數。

//server
const http = require('http');
const ms = 2000;
const init = () => {
    http.createServer((req,res) => {
        sleep(ms);
        console.log(req.method);
        console.log("After sleeping 2 seconds,hello from server");
        res.end();
    }).listen(5000, () => {
        console.log("server running");
    });
}
function sleep(ms) {
    Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,ms);
    console.log("Sleep 2 seconds.");
}

module.exports.init = init;

//client
const url = "http://127.0.0.1:5000";
const http = require('http');

 const  getData = async url => {
  await http.get(url, res => {
    res.on('data', chunk => {
      console.log("chunk : "+chunk);
    });
    res.on('end', () => {
      console.log("response ended.");
    });
  }).on("error", (error) => {
    console.log("Error: " + error.message);
  });
};
const makeRequests = () => {
  for (let i = 0; i < 3; i++) {
    getData(url);
  }
}
module.exports.makeRequests = makeRequests;

//app
const server1 = require('./server1');
const client = require('./client');

server1.init();
client.makeRequests();

我如何正確使用異步等待? 為什么它現在打印“塊”?

想要從客戶端到服務器發出一些異步請求。

好吧,您的代碼實際上是異步的。

我如何正確使用異步等待?

如何正確使用 async/await 有示例如何使用。

為什么它現在打印“塊”?

http.get(url, res => {
    res.on('data', chunk => {
      console.log("chunk : "+chunk);
    });
    res.on('end', () => {
      console.log("response ended.");
    });

http.get(url, callback) ... response.on("data") 如果收到一個新的塊就會被觸發。 因此它會一直讀取,直到響應流獲得 EOF(文件結尾)。 如果您想一次保存和讀取整個數據,您可以通過追加將塊寫入變量並在“結束”時讀取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM