只是玩了一下,但注意到它占用了太长时间才能加载页面,无论如何要让它一次打印出一行而不是等到整个页面加载
File "/usr/local/lib/python2.7/dist-packages/antlr4/Lexer.py", line 109,
in nextToken
tokenStartMarker = self._input.mark()
AttributeError: 'str' object has no attribute 'mark'
现在我怎样才能更好地控制这个问题,无论一旦准备好加载打印需要多长时间,甚至放慢速度就可以了。
答案 0 :(得分:1)
javascript方法window.requestAnimationFrame(callback)
将在下一个动画帧上调用您的回调函数。它通常用于动画,并且可能适用于你正在做的事情。
要修改代码以使用requestAnimationFrame
,您必须让您的函数自行打印一个小块,并引用以了解要打印的块。例如,如果您将页面内容存储在数组中,那么它可能只是一个起始索引和一个长度。由于您打印的增加功率为2,因此您可以传递最后一次2的幂和每次运行函数时要打印的行数。
您还需要退出条件 - limits
内的检查,如果为真,则返回而不请求下一帧。我只是对a
的值设置了一个硬帽,但你也可以检查索引是否小于数组长度(对于我上面的页面内容数组的想法)。
因为requestAnimationFrame
将函数名作为回调传递,所以不能将参数传递给它。因此,您必须使用bind
将值附加到函数。然后,在函数中,您可以使用this
访问它们。 config
只是一个对象,用于保存您希望函数具有的初始参数,然后绑定它,这允许您使用this.numLines
和this.a
在函数中访问它们。 / p>
然后,当您请求下一帧时,您必须再次将值绑定到limits
。如果您保持参数相同,那么您可以limits.bind(this)
。但是如果你想要改变它们,你可以用类似于我写config
的方式创建另一个对象并将其绑定。
以下代码似乎是您正在寻找的基本示例:
var foo = document.getElementById('foo');
var maxA = 1000000000000000000000000000000000;
function limits() {
for(var i=0; i<this.numLines; ++i) {
foo.innerHTML += "<p>" + this.a + "</p>";
this.a *= 2;
if(this.a > maxA) {
return;
}
}
requestAnimationFrame(limits.bind(this));
}
config = {
numLines: 3,
a: 1
};
requestAnimationFrame(limits.bind(config));
并在JSFiddle here中实现。我还实现了一个版本,它将每一行放在页面的顶部(而不是将其附加到底部),这样你就可以看到它发生得更好(你可以找到一个here)。
答案 1 :(得分:0)
您可以这样做:
string ApiGatewayPassthroughHeader = context.HttpContext.Request.Headers["ApiGatewayPassthroughHeader"];
if (ApiGatewayPassthroughHeader != Environment.GetEnvironmentVariable("ApiGatewayPassthroughHeader"))
{
throw new error;
}
您可以在setTimeout中调整时间,但即使将其保留为零,也可以在页面构建时提供更具交互性的体验。如果你愿意,将它设置为10或100当然会大大减慢它。