确保进一步维修之前已完成服务

时间:2019-06-26 10:39:12

标签: angular typescript

我需要确保在完成其他功能之前完成我的服务,因为我需要使用其结果。我看到了一些解决方案,例如this,但没有用。

这是我的代码:

我的服务:

  getText(){ return this.http.get(this.textURL, {responseType: 'text'}); }

我在ngOnInit中将其称为:

ngOnInit()
{


    let spaceIndex=0;
    this.readJsonService.getText().subscribe((data) => {

         for (const line of data.split(/[\r\n]+/)){
        //   console.log(line);
           spaceIndex=line.search(/\s/);
        //   console.log("spaceIndex  " + spaceIndex)
           this.weakness.push({
             CWE_ID: line.substring(line.search('CWE-'), spaceIndex),
             weakness: line.substr(spaceIndex)
           })
          }
            console.log(this.weakness.length)
            console.log(this.weakness)
       });


 this.trythis();
}

并在tryThis()函数中,我想记录结果,该结果处于全局接口的弱点。像这样:

  console.log(this.weakness.length); console.log(this.weakness)

,但是它首先运行Trythis()函数,因此给出一个空数组,并说长度为0,同时运行该服务。然后从ngonInit函数记录该数组。 请帮忙。谢谢你。

2 个答案:

答案 0 :(得分:1)

放置语句“ this.trythis();”如下,

    ngOnInit() {


        let spaceIndex=0;
        this.readJsonService.getText().subscribe((data) => {

             for (const line of data.split(/[\r\n]+/)){
            //   console.log(line);
               spaceIndex=line.search(/\s/);
            //   console.log("spaceIndex  " + spaceIndex)
               this.weakness.push({
                 CWE_ID: line.substring(line.search('CWE-'), spaceIndex),
                 weakness: line.substr(spaceIndex)
               })
              }
                console.log(this.weakness.length)
                console.log(this.weakness)

                this.trythis();
           });



}

答案 1 :(得分:0)

生命周期挂钩在注射剂上不存在。因此,不要使用@Injectables中的ngOnInit之类的生命周期挂钩,而要使用构造函数。

@Injectable()

  constructor() {
      //your code
  }