我需要确保在完成其他功能之前完成我的服务,因为我需要使用其结果。我看到了一些解决方案,例如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函数记录该数组。 请帮忙。谢谢你。
答案 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
}