小编Mog*_*lum的帖子

使用异步函数作为 EventEmitter 侦听器有什么问题吗?

我正在编写一个 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)

javascript asynchronous node.js eventemitter

3
推荐指数
1
解决办法
3278
查看次数

Sinon clock.tick 不会提前 setTimeout 的时间

我正在为一个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)

javascript node.js sinon

3
推荐指数
1
解决办法
2214
查看次数

标签 统计

javascript ×2

node.js ×2

asynchronous ×1

eventemitter ×1

sinon ×1