Skip to content

Commit aec5e8b

Browse files
committed
Fix timer id generation -- we shouldn't have clashing id's anymore.
1 parent 56f42c6 commit aec5e8b

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

timer/timer.android.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,26 @@
33
*/
44
var timeoutHandler;
55
var timeoutCallbacks = {};
6+
var timerId = 0;
67

7-
function createHadlerAndGetId(): number {
8+
function createHandlerAndGetId(): number {
89
if (!timeoutHandler) {
910
timeoutHandler = new android.os.Handler(android.os.Looper.getMainLooper());
1011
}
1112

12-
return new Date().getUTCMilliseconds();
13+
timerId++;
14+
return timerId;
1315
}
1416

1517
export function setTimeout(callback: Function, milliseconds = 0): number {
16-
var id = createHadlerAndGetId();
18+
var id = createHandlerAndGetId();
1719

1820
var runnable = new java.lang.Runnable({
1921
run: () => {
2022
callback();
2123

22-
if (timeoutCallbacks && timeoutCallbacks[id]) {
23-
timeoutCallbacks[id] = null;
24+
if (timeoutCallbacks[id]) {
25+
delete timeoutCallbacks[id];
2426
}
2527
}
2628
});
@@ -37,12 +39,12 @@ export function setTimeout(callback: Function, milliseconds = 0): number {
3739
export function clearTimeout(id: number): void {
3840
if (timeoutCallbacks[id]) {
3941
timeoutHandler.removeCallbacks(timeoutCallbacks[id]);
40-
timeoutCallbacks[id] = null;
42+
delete timeoutCallbacks[id];
4143
}
4244
}
4345

4446
export function setInterval(callback: Function, milliseconds = 0): number {
45-
var id = createHadlerAndGetId();
47+
var id = createHandlerAndGetId();
4648
var handler = timeoutHandler;
4749

4850
var runnable = new java.lang.Runnable({
@@ -61,4 +63,4 @@ export function setInterval(callback: Function, milliseconds = 0): number {
6163
return id;
6264
}
6365

64-
export var clearInterval = clearTimeout;
66+
export var clearInterval = clearTimeout;

timer/timer.ios.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* iOS specific timer functions implementation.
33
*/
44
var timeoutCallbacks = {};
5+
var timerId = 0;
56

67
class TimerTargetImpl extends NSObject {
78
static new(): TimerTargetImpl {
@@ -25,7 +26,8 @@ class TimerTargetImpl extends NSObject {
2526
}
2627

2728
function createTimerAndGetId(callback: Function, milliseconds: number, shouldRepeat: boolean): number {
28-
var id = new Date().getUTCMilliseconds();
29+
timerId++;
30+
var id = timerId;
2931

3032
var timerTarget = TimerTargetImpl.new().initWithCallback(callback);
3133
var timer = NSTimer.scheduledTimerWithTimeIntervalTargetSelectorUserInfoRepeats(milliseconds / 1000, timerTarget, "tick", null, shouldRepeat);
@@ -44,12 +46,12 @@ export function setTimeout(callback: Function, milliseconds = 0): number {
4446
export function clearTimeout(id: number): void {
4547
if (timeoutCallbacks[id]) {
4648
timeoutCallbacks[id].invalidate();
47-
timeoutCallbacks[id] = null;
49+
delete timeoutCallbacks[id];
4850
}
4951
}
5052

5153
export function setInterval(callback: Function, milliseconds = 0): number {
5254
return createTimerAndGetId(callback, milliseconds, true);
5355
}
5456

55-
export var clearInterval = clearTimeout;
57+
export var clearInterval = clearTimeout;

0 commit comments

Comments
 (0)