MCPcopy Index your code
hub / github.com/easydiffusion/easydiffusion / continueTasks

Function continueTasks

ui/media/js/engine.js:1231–1341  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1229
1230 let idleEventPromise = undefined
1231 function continueTasks() {
1232 if (typeof navigator?.scheduling?.isInputPending === "function") {
1233 const inputPendingOptions = {
1234 // Report mouse/pointer move events when queue is empty.
1235 // Delay idle after mouse moves stops.
1236 includeContinuous: Boolean(task_queue.size <= 0 && concurrent_generators.size <= 0),
1237 }
1238 if (navigator.scheduling.isInputPending(inputPendingOptions)) {
1239 // Browser/User still active.
1240 return asyncDelay(CONCURRENT_TASK_INTERVAL)
1241 }
1242 }
1243 const serverCapacity = getServerCapacity()
1244 if (task_queue.size <= 0 && concurrent_generators.size <= 0) {
1245 if (!idleEventPromise?.isPending) {
1246 idleEventPromise = makeQuerablePromise(
1247 eventSource.fireEvent(EVENT_IDLE, { capacity: serverCapacity, idle: true })
1248 )
1249 }
1250 // Calling idle could result in task being added to queue.
1251 // if (task_queue.size <= 0 && concurrent_generators.size <= 0) {
1252 // return asyncDelay(IDLE_COOLDOWN).then(() => idleEventPromise)
1253 // }
1254 }
1255 if (task_queue.size < serverCapacity) {
1256 if (!idleEventPromise?.isPending) {
1257 idleEventPromise = makeQuerablePromise(
1258 eventSource.fireEvent(EVENT_IDLE, { capacity: serverCapacity - task_queue.size })
1259 )
1260 }
1261 }
1262 const completedTasks = []
1263 for (let [generator, promise] of concurrent_generators.entries()) {
1264 if (promise.isPending) {
1265 continue
1266 }
1267 let value = promise.resolvedValue?.value || promise.resolvedValue
1268 if (promise.isRejected) {
1269 console.error(promise.rejectReason)
1270 const event = { generator, reason: promise.rejectReason }
1271 eventSource.fireEvent(EVENT_UNHANDLED_REJECTION, event)
1272 if ("continueWith" in event) {
1273 value = Promise.resolve(event.continueWith)
1274 } else {
1275 concurrent_generators.delete(generator)
1276 completedTasks.push({ generator, promise })
1277 continue
1278 }
1279 }
1280 if (value instanceof Promise) {
1281 promise = makeQuerablePromise(value.then((val) => ({ done: promise.resolvedValue?.done, value: val })))
1282 concurrent_generators.set(generator, promise)
1283 continue
1284 }
1285 weak_results.set(generator, value)
1286 if (promise.resolvedValue?.done) {
1287 concurrent_generators.delete(generator)
1288 completedTasks.push({ generator, promise })

Callers 1

startCheckFunction · 0.85

Calls 7

asyncDelayFunction · 0.85
getServerCapacityFunction · 0.85
makeQuerablePromiseFunction · 0.85
fireEventMethod · 0.80
deleteMethod · 0.80
pushMethod · 0.80
startMethod · 0.45

Tested by

no test coverage detected