Javascript 销毁承诺而不发生内存泄漏和don';不要执行任何回调

Javascript 销毁承诺而不发生内存泄漏和don';不要执行任何回调,javascript,angularjs,memory-leaks,q,angular-promise,Javascript,Angularjs,Memory Leaks,Q,Angular Promise,我使用$q创建延迟对象。像这样的正常用例: deferred.promise.then(success_callback, error_callback) 当deferred.resolve()/deferred.reject()时,没有内存泄漏,因为执行了成功回调或错误回调。但是现在我想销毁promise对象,这意味着我不想调用deferred.resolve()或deferred.reject(),而不会出现内存泄漏。我该怎么做 编辑: 更清楚地说,我想忽略承诺的存在,我不想再执行succ

我使用
$q
创建延迟对象。像这样的正常用例:

deferred.promise.then(success_callback, error_callback)
deferred.resolve()/deferred.reject()
时,没有内存泄漏,因为执行了成功回调或错误回调。但是现在我想销毁promise对象,这意味着我不想调用
deferred.resolve()
deferred.reject()
,而不会出现内存泄漏。我该怎么做

编辑: 更清楚地说,我想忽略承诺的存在,我不想再执行
success\u callback
error\u callback
。是的,也许我想取消注册回调

delete deferred.promise

在JS中生成内存泄漏有些困难,因为它具有自动内存清理功能;发生这种情况的主要方式是两个对象相互引用,但它们彼此之外没有对自身的引用。

您可以在resolve()中运行任何内存清理任务,然后调用Non side effect then()吗?@dandavis:我不想执行
success\u callback
。如果我调用
resolve()
,则会执行该回调。那么您是否会“违背您的承诺”?)这不能解决我的问题。因为promise对象在延迟对象resolve()或reject()时仍用于执行回调。我的错误;我认为delete关键字取代了JS的自动内存垃圾收集功能。鉴于此,我认为没有一种简单的方法可以做到这一点。