是否可以在Node.js中完全同时发出多个HTTP请求?

时间:2019-06-03 10:13:26

标签: node.js asynchronous parallel-processing fetch

我想在完全相同的时间内发送两个或多个HTTP请求,我知道这不可能,因为Nodejs是一种单线程语言并且有一个队列。

我创建了事件发射器,并在发出一些东西后添加了5个侦听器 它发送HTTP请求。

const events = require('events');
const eventEmitter = new events.EventEmitter();

const callback = ()=>{
    console.log(new Date().getTime());
    fetch('https://jsonplaceholder.typicode.com/todos/1')
        .then(response => response.json())
        .then(json => console.log(json));
};
eventEmitter.on('message',callback);

// second request
eventEmitter.on('message',callback);

// third request
eventEmitter.on('message',callback);

// forth request
eventEmitter.on('message',callback);

// fifth request
eventEmitter.on('message',callback);

eventEmitter.emit('message');


这是输出

1559556527258
1559556527276
1559556527277
1559556527278
1559556527280
{ userId: 1, id: 1, title: 'delectus aut autem', completed: false }
{ userId: 1, id: 1, title: 'delectus aut autem', completed: false }
{ userId: 1, id: 1, title: 'delectus aut autem', completed: false }
{ userId: 1, id: 1, title: 'delectus aut autem', completed: false }
{ userId: 1, id: 1, title: 'delectus aut autem', completed: false }


我希望这些请求在完全相同的时间运行。还有其他方法可以在完全相同的时间发送这些请求吗?

1 个答案:

答案 0 :(得分:0)

  

我只是在尝试测试“ MySQL”交易是否能够正常运行,一些用户同时向我的应用发送请求,因此他们使用相同的优惠券代码两次。

可能更简单的第一步是编写一个小型单元测试,以在不使用HTTP消息传递部分的情况下测试您的业务逻辑事务。