我正在看宣传单。
在setTimeout中调用wrapperFn.apply(context,args)有什么原因吗
和非
fn.apply(上下文,args)
?
我试过了,结果也一样。但是想知道它是否有意义吗?
function a(fn, time, context) {
var lock, execOnUnlock;
return function wrapperFn() {
var args = arguments;
if (lock) {
execOnUnlock = true;
return;
}
lock = true;
setTimeout(function () {
lock = false;
if (execOnUnlock) {
wrapperFn.apply(context, args);
execOnUnlock = false;
}
}, time);
fn.apply(context, args);
};
},
该函数为作为第一个参数的函数创建一个包装器,该包装器只能在第二个参数指定的间隔内执行。如果在间隔内再次调用一次或多次,最后一次调用将在间隔后自动执行。
var f = a(someFunction, 1000, {});
f(1); // this will execute the function
f(2); // this will not be executed
f(3); // this will be executed after a second
setTimeout(function(){
f(4); // this will be executed a half second later (two seconds after the first)
}, 1500);
在间隔结束时自动进行的调用将在另一个时间间隔内锁定该函数。如果代码将调用fn
而不是wrapperFn
,那么该调用将不会被锁定,并且您可以在间隔内再次调用该函数。例子:
var f = a(someFunction, 1000, {});
f(1); // this will execute the function
f(2); // this will not be executed
f(3); // this will be executed after a second
setTimeout(function(){
f(4); // this would be executed immediately (1.5 seconds after the first)
}, 1500);
为什么jaxb在下面生成一个名为的类型参数? 这个文件是由JavaTM体系结构用于XML绑定(JAXB)参考实现生成的: 也许这是一个我不知道的设计模式?
问题内容: 这段代码使我凝视了几分钟: (这里的第137行) 我以前从未见过,而且我也不知道Java有一个“ loop”关键字(NetBeans甚至没有像关键字一样给它上色),并且它在JDK 6中可以很好地编译。 有什么解释? 问题答案: 它不是一个keyword,而是一个label。 用法:
问题内容: 这段代码使我凝视了几分钟: 我以前从未见过,而且我也不知道Java有一个“ loop”关键字(NetBeans甚至没有像关键字一样给它上色),并且它在JDK 6中可以很好地编译。 有什么解释? 问题答案: 这不是一个。 用法:
问题内容: 如果你给 它没有编译,但是带有花括号的相同代码是: 有什么解释? 问题答案: 基本上,变量声明只能在块中声明。 查看 Java语言规范中“语句”的语法 -它包括Block,但不包括LocalVariableDeclarationStatement- 后者是block语法的一部分。 这实际上是实用主义的问题:如果没有括号,则只能使用一个语句。如果没有后续语句,则声明变量是没有意义的,因为
我想知道为什么下面的代码: 我被要求详细解释,但我不明白为什么输出是这样的。请有人帮帮我。