我怎么能等到不为空的东西然后运行函数

时间:2018-07-30 13:26:32

标签: javascript html angular typescript

因此,当前在highlight上调用此函数ngOnInit,但是放入DOM的文本大约需要一秒钟的时间才能写入DOM

因此,当函数运行时,它会返回null并期望那里的文本。当document.getElementById('scrollable') === null进行操作时,如何运行此功能。

到目前为止,让它运行的唯一方法是超时800ms,但这并不好,因为某些人的互联网速度比其他人慢,因此如果互联网或计算机花费的时间更长,则会导致问题加载页面。

我尝试了几种不同的方法,但是没有一种起作用。如果有人有什么好的建议,请随时告诉我。

highlight(words) {
      const high = document.getElementById('scrollable');
      const paragraph = high.innerHTML.split(' ');
   }
}

当前使用Angular 6。

HTML:https://gist.github.com/ElAndy94/fa78b5b25a73716e2c32045c6c6be1ff

TS:https://gist.github.com/ElAndy94/85950e0e84aad30a72d3b91faa7d6278

1 个答案:

答案 0 :(得分:1)

我建议您看看Angular Component Life Cycle。您应该使用AfterViewInit钩子来确保您的视图已初始化。

import { Component, AfterViewInit } from '@angular/core';

@Component({...})
export class MyOwnComponent implements AfterViewInit {

  constructor() { }

  ngAfterViewInit() { // Here your view is checked and initialized.
    this.highlight();
  }

  highlight(words) {
    const high = document.getElementById('scrollable');
    const paragraph = high.innerHTML.split(' ');
    ...
  }

}