【问题标题】:potentially a memory leak - how should I fix this [duplicate]潜在的内存泄漏 - 我应该如何解决这个问题[重复]
【发布时间】:2020-01-01 20:38:51
【问题描述】:

我的 Angular 应用程序从服务器收到 JSON 格式的响应。我将响应转换为如下模型

let questionListSubscription = this.questionManagementService.questionsArray$.subscribe((result: Result) => {
        console.log("received result from question array observable", result);
        if (result.result === "success") {
            //received response from server
            let questionList = JSON.parse(result.additionalInfo) as PracticeQuestionsListAPI;
            console.log("got list of questions value ", questionList);
            //...
            this.questionsFilter["pagination-info"] = questionList["pagination-info"];
            //...
        }
    }
);

上面随机崩溃,错误ERROR TypeError: Cannot set property 'pagination-info' of undefined指向行this.questionsFilter['pagination-info'] = questionList['pagination-info'];

当我再次运行代码时,它起作用了。

上述分配是否有误并可能导致内存泄漏?

【问题讨论】:

  • 字段/属性questionsFilter 何时设置?它是否也在与questionsArray 的回调同时执行的回调中完成?如果是这样,您有一个竞争条件,您必须链接您的可观察对象,以便回调以特定顺序执行。此外,这与内存泄漏无关,这是一个完全不相关的主题(谷歌它看看它需要什么)。

标签: angular


【解决方案1】:

我认为问题在于您没有正确定义this.questionsFilter。应该定义为:

questionsFilter = {}

【讨论】:

  • Angular6 中,我将其定义为export class PraticeQuestionListComponent implements OnInit {questionsFilter:GetQuestionsfilter ; }。现在我还在构造函数中将其初始化为this.questionsFilter = new GetQuestionsfilter("",new AdditionalPagingInfo("",new PartitionInfo(0,0)));。我想知道只是将它分配给传入的响应在某种程度上是不正确的
  • 然后检查questionList['pagination-info'];正在从 API 获取价值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 2012-05-23
相关资源
最近更新 更多