gpt4 book ai didi

javascript - 我如何使用事件发射器接收多个相同类型的事件?

转载 作者:行者123 更新时间:2023-11-30 20:20:09 24 4
gpt4 key购买 nike

我正在使用 mocha 框架编写测试用例。我必须编写测试用例,其中我想接收多个相同类型的事件,并根据预期值检查所有事件值。我正在使用 EventEmitter 来发出事件,但我不不知道如何一次累积多个事件,然后在一个上下文中检查所有值。

如何使用 eventEmitter 或任何其他方式聚合/累积事件?

最佳答案

您可以只创建一个空数组来保存发出的值,每当发出新事件时,将其推送到数组并检查其长度。当数组长度等于您期望的事件数时,执行您需要的所有检查。如果您在多个测试中需要该功能,可以将其提取到一个单独的函数中。查看以下示例中的 collect 函数:

// waits for specified number of events and then resolves with the results
function collect(emitter, event, count) {
const results = [];

return new Promise((resolve, reject) => {
emitter.on(event, value => {
results.push(value);
if (results.length === count) {
return resolve(results);
}
})
})
}

describe('EventEmitter', function() {
it('emits 3 ping events', function() {
const emitter = new EventEmitter();

setTimeout(() => {
emitter.emit('ping', 'pong');
emitter.emit('ping', 'pong');
emitter.emit('ping', 'pong');
}, 10)

return collect(emitter, 'ping', 3).should.eventually.eql(['pong', 'pong', 'pong']);
})
})

关于javascript - 我如何使用事件发射器接收多个相同类型的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51531705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com