我希望实现这个库
var timer = new Tock({
this.callback: callbackFunction,
this.interval: 10,
this.complete: completeFunction,
});不过,我希望能够作出积极的呼吁:
var milkshake = my_milkshakes[next];
var timer = new Tock({
this.callback: makeMoreMilkshakes(), // (Call version 2)
this.interval: shakeTime,
this.complete: bringThemToTheYard
});
function bringThemToTheYard(){
return setNextCallbackFunction();
}这里的问题似乎是我无法触及初始化范围之外的范围。在Java中,我可以很容易地将参数传递给构造函数,除非需要函数句柄。
抽象的意思是,代码不能通过引用来重用,但这显然是一个松散的术语。
我的目标是初始化一个new计时器调用,以创建新的定时器。我需要5个不同的计时器。理想情况下,一个计时器就足够了,因为计时器是在线性时间内启动和停止的。
我的主要问题是,我不能将(例如) this.interval设置为动态变量x__,因为我不知道如何将值传递给构造函数。
我的实现是基于以下文档中的“代码”:
var timer = new Tock({
countdown: true,
interval: 10,
callback: someCallbackFunction,
complete: someCompleteFunction
});发布于 2016-01-04 14:27:55
我不太确定您是否掌握了JavaScript,以及它与Java到底有多大不同--它们并没有那么相似。
这是:
var timer = new Tock({
this.callback: makeMoreMilkshakes(), // (Call version 2)
this.interval: shakeTime,
this.complete: bringThemToTheYard
});在JavaScript中不起作用。这是一个语法错误,因为不能在对象定义的左侧使用点表示法(.)。似乎你想要这样的东西:
function Tock(config) {
var defaultCallback = callbackFunction;
var defaultInterval = 10;
var defaultComplete = completeFunction;
this.callback = config.callback || defaultCallback;
this.interval = config.interval || defaultInterval;
this.complete = config.complete || defaultComplete;
/**
* This could also be written as follows, I just wanted
* to emphasize how many people write "defaults" in JS
this.callback = config.callback || callbackFunction;
this.interval = config.interval || 10;
this.complete = config.complete || completeFunction;
*/
// Go on doing stuff....
}
var timer = new Tock({
callback: makeMoreMilkshakes(),
interval: shakeTime,
complete: bringThemToTheYard
});另外,这条线看上去不太对劲:
callback: makeMoreMilkshakes(),这是将makeMoreMilkshakes的结果分配给回调,而不是函数本身。如果这是有意的,那就别管这一点了。但我觉得你想:
callback: makeMoreMilkshakes,而不使用()。
发布于 2016-01-05 08:31:57
我想找的解决办法是:
function startNewTimer(type) {
var timer = new Tock({});
var options = null;
switch (type){
case "first":
options.callback = function1;
options.interval = interval1;
options.complete = startNewTimer(second);
break;
case "second":
options.callback = function2;
options.interval = interval2;
options.complete = startNewTimer(third);
break;
case "third":
options.callback = function3;
options.interval = interval3;
options.complete = startNewTimer(fourth);
break;
case "fourth":
options.callback = function4;
options.interval = interval4;
options.complete = startNewTimer(first); //Start over from function1
break;
}
timer.callback = options.callback;
timer.interval = options.interval;
timer.complete = options.complete;
timer.start(0);
out("Starting timer: ".concat(timer.callback));
}https://stackoverflow.com/questions/34593016
复制相似问题