如何使文字出现?

时间:2016-11-07 02:22:41

标签: javascript

document.write('Test.');
while (true) 1;

我希望浏览器首先显示文本,然后跳转到无限循环。但我没有看到任何文字。如何强制浏览器逐行进行?我正在寻找一个简单的函数,告诉浏览器等待第一行完成。有这样的事吗?像waitForEverythingToFinish()一样。就像使用window.getComputedStyle(div).getPropertyValue('height')强制重绘一样。

2 个答案:

答案 0 :(得分:1)

我认为根据您的评论,这个问题的实质是,您希望确保浏览器有时间更新屏幕,然后启动长时间运行的同步< / em>任务。浏览器会尽可能更新屏幕,因此如果您阻止主线程,则无法获得刷新的UI。这可以通过简单的超时或评论建议requestAnimationFrame

来实现

简单超时:

// For example, document.write(...)
funcThatChangesScreen();

setTimeout(function () {
  // For example, lots of heavy calculations
  synchronousFuncThatTakesALongTime();
}, 100);

JSFiddle比较:

或者,请参阅requestAnimationFrame

编辑:正如评论中的其他人所指出的那样,这并不是真正获得所需内容的最佳方式,即使它确实有效。如果您有长时间运行的同步任务,最好将其委派给WebWorker或使其异步。这个超时解决方案将允许用户在屏幕上看到文本,但它仍然会阻止UI,就像上面的JSFiddles一样。

答案 1 :(得分:-1)

看看这是否适用于您的目的?

if(!document.write('Test.')){
    while (true) 1;
}