UNPKG

next

Version:

The React Framework

64 lines (63 loc) 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { atLeastOneTask: null, scheduleImmediate: null, scheduleOnNextTick: null, waitAtLeastOneReactRenderTask: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { atLeastOneTask: function() { return atLeastOneTask; }, scheduleImmediate: function() { return scheduleImmediate; }, scheduleOnNextTick: function() { return scheduleOnNextTick; }, waitAtLeastOneReactRenderTask: function() { return waitAtLeastOneReactRenderTask; } }); const scheduleOnNextTick = (cb)=>{ // We use Promise.resolve().then() here so that the operation is scheduled at // the end of the promise job queue, we then add it to the next process tick // to ensure it's evaluated afterwards. // // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255 // Promise.resolve().then(()=>{ if (process.env.NEXT_RUNTIME === 'edge') { setTimeout(cb, 0); } else { process.nextTick(cb); } }); }; const scheduleImmediate = (cb)=>{ if (process.env.NEXT_RUNTIME === 'edge') { setTimeout(cb, 0); } else { setImmediate(cb); } }; function atLeastOneTask() { return new Promise((resolve)=>scheduleImmediate(resolve)); } function waitAtLeastOneReactRenderTask() { if (process.env.NEXT_RUNTIME === 'edge') { return new Promise((r)=>setTimeout(r, 0)); } else { return new Promise((r)=>setImmediate(r)); } } //# sourceMappingURL=scheduler.js.map