Loading homepage
Input: With wait=100, call wrapped('A') at t=0 and wrapped('B') at t=50. Output: fn('A') runs at t=0; fn('B') runs at t=100.
Input: Call wrapped(), then immediately cancel(). Output: The leading callback runs; no trailing work remains.
throttle(fn, wait) returns a callable with cancel(). TypeScript preserves argument and receiver types.
Input arguments: {"delay":100,"actions":[{"type":"call","arguments":[1]},{"type":"advance","milliseconds":200}]}
Expected: {"returnedFunction":true,"hasCancel":true,"calls":[{"at":0,"arguments":[1],"context":null}],"pendingTimers":0}Input arguments: {"delay":100,"actions":[{"type":"call","arguments":[1]},{"type":"advance","milliseconds":50},{"type":"call","arguments":[2]},{"type":"advance","milliseconds":250}]}
Expected: {"returnedFunction":true,"hasCancel":true,"calls":[{"at":0,"arguments":[1],"context":null},{"at":100,"arguments":[2],"context":null}],"pendingTimers":0}Input arguments: {"delay":100,"actions":[{"type":"call","arguments":[1],"context":{"label":"first"}},{"type":"call","arguments":[2],"context":{"label":"last"}},{"type":"advance","milliseconds":200}]}
Expected: {"returnedFunction":true,"hasCancel":true,"calls":[{"at":0,"arguments":[1],"context":"first"},{"at":100,"arguments":[2],"context":"last"}],"pendingTimers":0}Input arguments: {"delay":100,"actions":[{"type":"call","arguments":[1]},{"type":"call","arguments":[2]},{"type":"cancel"},{"type":"advance","milliseconds":200}]}
Expected: {"returnedFunction":true,"hasCancel":true,"calls":[{"at":0,"arguments":[1],"context":null}],"pendingTimers":0}Input arguments: {"delay":100,"actions":[{"type":"call","arguments":[1]},{"type":"cancel"},{"type":"call","arguments":[2]},{"type":"advance","milliseconds":200}]}
Expected: {"returnedFunction":true,"hasCancel":true,"calls":[{"at":0,"arguments":[1],"context":null},{"at":0,"arguments":[2],"context":null}],"pendingTimers":0}Input arguments: {"delay":100,"actions":[{"type":"call","arguments":[1]},{"type":"advance","milliseconds":200},{"type":"call","arguments":[2]},{"type":"advance","milliseconds":200}]}
Expected: {"returnedFunction":true,"hasCancel":true,"calls":[{"at":0,"arguments":[1],"context":null},{"at":200,"arguments":[2],"context":null}],"pendingTimers":0}Input arguments: {"delay":100,"actions":[{"type":"call","arguments":[]},{"type":"advance","milliseconds":200}]}
Expected: {"returnedFunction":true,"hasCancel":true,"calls":[{"at":0,"arguments":[],"context":null}],"pendingTimers":0}Input arguments: {"delay":100,"actions":[{"type":"call","arguments":[1]},{"type":"advance","milliseconds":99}]}
Expected: {"returnedFunction":true,"hasCancel":true,"calls":[{"at":0,"arguments":[1],"context":null}],"pendingTimers":1}Input arguments: {"delay":100,"actions":[{"type":"call","arguments":[1]},{"type":"call","arguments":[2]},{"type":"advance","milliseconds":110},{"type":"call","arguments":[3]},{"type":"advance","milliseconds":290}]}
Expected: {"returnedFunction":true,"hasCancel":true,"calls":[{"at":0,"arguments":[1],"context":null},{"at":100,"arguments":[2],"context":null},{"at":200,"arguments":[3],"context":null}],"pendingTimers":0}