【发布时间】:2013-12-02 19:46:30
【问题描述】:
我有一个Promise。如果需要,我创建它是为了取消 AJAX 请求。但是由于我不需要取消那个 AJAX,所以我从来没有解决它并且 AJAX 成功完成。
一个简化的 sn-p:
var defer = $q.defer();
$http({url: 'example.com/some/api', timeout: defer.promise}).success(function(data) {
// do something
});
// Never defer.resolve() because I don't need to cancel that ajax. What happens to this promise after request?
从来没有解决过这样的承诺会导致内存泄漏吗?您对如何管理Promise 生命周期有什么建议吗?
【问题讨论】:
-
一个“从未解决”的承诺仍然可以被“拒绝”。您要查找的词是“未实现”。
-
$http 是一个有趣的例子,因为如果客户端无法访问服务器,无论传递给“超时”参数的承诺如何,最终 HTTP 请求都会超时(或以其他方式产生错误响应)。
标签: javascript angularjs memory-leaks promise angular-promise