You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.2 KiB
35 lines
1.2 KiB
(function (factory) { |
|
if (typeof module === "object" && typeof module.exports === "object") { |
|
var v = factory(require, exports); |
|
if (v !== undefined) module.exports = v; |
|
} |
|
else if (typeof define === "function" && define.amd) { |
|
define(["require", "exports"], factory); |
|
} |
|
})(function (require, exports) { |
|
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
class Async { |
|
static $delay(timeout) { |
|
return new Promise((resolve) => { |
|
setTimeout(resolve, timeout); |
|
}); |
|
} |
|
static $yield() { |
|
return new Promise((resolve) => { |
|
// process.nextTick(resolve); |
|
// setTimeout(resolve, 0); |
|
setImmediate(resolve); |
|
}); |
|
} |
|
static async $await(callback, timeout = 0) { |
|
const startTime = Date.now(); |
|
while (!callback()) { |
|
await this.$yield(); |
|
if ((timeout > 0) && (Date.now() - startTime > timeout)) |
|
throw new Error('Timeout reached'); |
|
} |
|
} |
|
} |
|
exports.Async = Async; |
|
});
|
|
|