我正在编写一个 Node.js v10 应用程序,我想await在事件侦听器函数中使用,所以我制作了一个async侦听器函数。根据下面的代码,它似乎可以工作。
但是我很好奇在使用该方法将async函数注册为EvenEmitter侦听器时是否存在隐藏的缺点或应该注意的事项on()?以后可能有什么东西回来咬我?
const EventEmitter = require('events');
const emitter = new EventEmitter();
const syncListener = () => {
console.log('sync bar ');
};
const asyncListener = async () => {
console.log('async bar');
};
emitter.on('foo', asyncListener);
emitter.on('foo', syncListener);
emitter.emit('foo');
Run Code Online (Sandbox Code Playgroud) 我正在为一个async执行一系列任务的函数编写测试,并且在执行更多任务之前等待 60 秒。我试图使用sinon.useFakeTimers()跳过这 60 秒,以便我可以在延迟后测试逻辑。
foo.js
module.exports.foo = async f => {
// ... more code ...
await new Promise((resolve, reject) => {
setTimeout(resolve, 60000);
});
// ... more code ...
f();
// ... more code ...
};
Run Code Online (Sandbox Code Playgroud)
测试 foo.js
const sinon = require('sinon');
const expect = require('chai').expect;
const { foo } = require('./foo');
describe('Module Foo ', function() {
it('call function after 1 minute', function() {
var clock = sinon.useFakeTimers();
const bar = sinon.stub();
foo(bar);
expect(bar.called).to.be.false; …Run Code Online (Sandbox Code Playgroud)