1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- "use strict";
- var rawAsap = require("./raw");
- var freeTasks = [];
- module.exports = asap;
- function asap(task) {
- var rawTask;
- if (freeTasks.length) {
- rawTask = freeTasks.pop();
- } else {
- rawTask = new RawTask();
- }
- rawTask.task = task;
- rawTask.domain = process.domain;
- rawAsap(rawTask);
- }
- function RawTask() {
- this.task = null;
- this.domain = null;
- }
- RawTask.prototype.call = function () {
- if (this.domain) {
- this.domain.enter();
- }
- var threw = true;
- try {
- this.task.call();
- threw = false;
-
-
- if (this.domain) {
- this.domain.exit();
- }
- } finally {
-
-
- if (threw) {
-
-
-
-
-
- rawAsap.requestFlush();
- }
-
-
- this.task = null;
- this.domain = null;
- freeTasks.push(this);
- }
- };
|