@effection/core
Advanced tools
Comparing version 2.0.0-preview.0 to 2.0.0-preview.0-2e4a035
{ | ||
"name": "@effection/core", | ||
"version": "2.0.0-preview.0", | ||
"version": "2.0.0-preview.0-2e4a035", | ||
"main": "dist/index.js", | ||
@@ -5,0 +5,0 @@ "types": "dist/index.d.ts", |
import { Operation } from './operation'; | ||
export function sleep(duration: number): Operation<void> { | ||
return function*() { | ||
let timeoutId; | ||
try { | ||
yield new Promise((resolve) => { | ||
setTimeout(resolve, duration); | ||
}); | ||
} finally { | ||
return (task) => (resolve) => { | ||
let timeoutId = setTimeout(resolve, duration); | ||
task.ensure(() => { | ||
if(timeoutId) { | ||
clearTimeout(timeoutId); | ||
} | ||
} | ||
}); | ||
} | ||
} |
34334
1040