D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
etb1lp46s9ed
/
public_html
/
wabulk.whatzi.online
/
node_modules
/
thread-stream
/
lib
/
Filename :
wait.js
back
Copy
'use strict' const MAX_TIMEOUT = 1000 function wait (state, index, expected, timeout, done) { const max = Date.now() + timeout let current = Atomics.load(state, index) if (current === expected) { done(null, 'ok') return } let prior = current const check = (backoff) => { if (Date.now() > max) { done(null, 'timed-out') } else { setTimeout(() => { prior = current current = Atomics.load(state, index) if (current === prior) { check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2) } else { if (current === expected) done(null, 'ok') else done(null, 'not-equal') } }, backoff) } } check(1) } // let waitDiffCount = 0 function waitDiff (state, index, expected, timeout, done) { // const id = waitDiffCount++ // process._rawDebug(`>>> waitDiff ${id}`) const max = Date.now() + timeout let current = Atomics.load(state, index) if (current !== expected) { done(null, 'ok') return } const check = (backoff) => { // process._rawDebug(`${id} ${index} current ${current} expected ${expected}`) // process._rawDebug('' + backoff) if (Date.now() > max) { done(null, 'timed-out') } else { setTimeout(() => { current = Atomics.load(state, index) if (current !== expected) { done(null, 'ok') } else { check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2) } }, backoff) } } check(1) } module.exports = { wait, waitDiff }