Page MenuHomePhorge

test_closure_spec.js
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

test_closure_spec.js

// test_closure.js - Test closure scoping across async boundaries
let results = [];
// Test 1: Sync push
results.push('1. sync');
// Test 2: setTimeout with closure
setTimeout(() => {
results.push('4. timeout 50ms');
}, 50);
setTimeout(() => {
results.push('3. timeout 10ms');
}, 10);
// Test 3: Promise with closure
Promise.resolve('2. promise').then(v => {
results.push(v);
});
// Test 4: queueMicrotask with closure
queueMicrotask(() => {
results.push('2. microtask');
});
// Test 5: Nested closure
const outer = 'outer-value';
setTimeout(() => {
const inner = 'inner-value';
setTimeout(() => {
results.push(`5. nested: ${outer}, ${inner}`);
}, 10);
}, 60);
// Final timeout to print results
setTimeout(() => {
console.log('Results length:', results.length);
console.log('Results:');
for (let i = 0; i < results.length; i++) {
console.log(' ', results[i]);
}
// Expected order:
// 1. sync
// 2. promise (microtask)
// 2. microtask (microtask)
// 3. timeout 10ms
// 4. timeout 50ms
// 5. nested: outer-value, inner-value
console.log('\nExpected 6 items, got:', results.length);
if (results.length === 6) {
console.log('✓ PASS: All closures captured correctly');
} else {
console.log('✗ FAIL: Missing items - closure bug');
}
}, 200);

File Metadata

Mime Type
text/plain
Expires
Sun, May 3, 7:21 AM (2 h, 43 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
537757
Default Alt Text
test_closure_spec.js (1 KB)

Event Timeline