mirror of https://github.com/nodejs/node.git
perf_hooks: make PerformanceObserver an AsyncResource
PR-URL: https://github.com/nodejs/node/pull/18789 Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>pull/18789/merge
parent
9e509b622b
commit
009e41826f
|
@ -36,6 +36,7 @@ const {
|
|||
NODE_PERFORMANCE_MILESTONE_PRELOAD_MODULE_LOAD_END
|
||||
} = constants;
|
||||
|
||||
const { AsyncResource } = require('async_hooks');
|
||||
const L = require('internal/linkedlist');
|
||||
const kInspect = require('internal/util').customInspectSymbol;
|
||||
const { inherits } = require('util');
|
||||
|
@ -317,12 +318,13 @@ class PerformanceObserverEntryList {
|
|||
}
|
||||
}
|
||||
|
||||
class PerformanceObserver {
|
||||
class PerformanceObserver extends AsyncResource {
|
||||
constructor(callback) {
|
||||
if (typeof callback !== 'function') {
|
||||
const errors = lazyErrors();
|
||||
throw new errors.TypeError('ERR_INVALID_CALLBACK');
|
||||
}
|
||||
super('PerformanceObserver');
|
||||
Object.defineProperties(this, {
|
||||
[kTypes]: {
|
||||
enumerable: false,
|
||||
|
@ -568,7 +570,7 @@ function getObserversList(type) {
|
|||
|
||||
function doNotify() {
|
||||
this[kQueued] = false;
|
||||
this[kCallback](this[kBuffer], this);
|
||||
this.runInAsyncScope(this[kCallback], this, this[kBuffer], this);
|
||||
this[kBuffer][kEntries] = [];
|
||||
L.init(this[kBuffer][kEntries]);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue