我有以下代码:-
var express = require('express');
var events = require('events');
var app = express();
var kick = new events.EventEmitter();
app.get('/info', function(req, res) {
console.log('at A');
kick.once('kick', function() {
console.log('at C');
res.send('info');
});
console.log('at B');
});
app.get('/info2', function(req, res) {
res.send('info2');
});
app.get('/kick', function(req, res) {
kick.emit('kick');
res.end();
});
app.listen(8080);
如果我在浏览器中输入 localhost:8080/info,我会得到预期的输出:-
at A
at B
如果我随后发出 kick 事件,我会得到预期的输出:-
at A
at B
at C
但是,如果我两次请求信息,则在第一个调用完成 kick 事件之前,第二个调用不会得到处理。这是为什么?阻塞发生在哪里?
我请求 info2 ok,而第一个 get 正在等待踢球。