【问题标题】:Tracking/Logging Promises跟踪/记录承诺
【发布时间】:2018-10-30 19:35:04
【问题描述】:

我正在尝试寻找跟踪 Promises 的解决方案。

我正在处理的项目有一些悬空的异步任务,这些任务没有等待/产生。我正在尝试寻找这种情况,因为这些悬空调用会干扰测试套件。

我的一种方法是使用 SinonJS 间谍监视全局 Promise 构造函数。但是在包装构造函数时,Promise 对象的属性会被 spy 隐藏/覆盖,导致 Promise 无法使用。

const spier = sinon.spy(global, 'Promise')

也许我可以利用一些全局跟踪(例如事件循环,或常见的实时 Promise 数组)。

或者也许有人对 Promise 有更深入的了解,并且可以推荐可访问的内部 Promise 函数的替代间谍点。

想听听您是否有任何类似的需求和您的方法。

【问题讨论】:

    标签: javascript node.js express mocha.js


    【解决方案1】:

    你可以像这样修改 promise 构造函数:

    const global = window; // (in browser...)
    const OldPromise = global.Promise; 
    global.Promise = class Promise extends OldPromise {
        constructor(executor) {
        // do whatever you want here, but must call super()
        console.log('hello, promise');
    
        super(executor); // call native Promise constructor
      }
    };
    
    Promise.resolve();
    

    来源:Monkey-patch Promise constructor

    【讨论】:

      猜你喜欢
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 2018-04-09
      相关资源
      最近更新 更多