Public
Edited
May 24, 2024
Importers
Insert cell
# Console - Notebook Console, Logger

```javascript
import { Logger } from '@baotlake-playground/console'
```

```javascript
logger = new Logger()
```

```javascript
logger.display()
```

```javascript
logger.display((l) => l.c)
```

Insert cell
class Logger {
constructor() {
this.logs = [];
this.p = Promise.withResolvers();
}

log(...args) {
console.log(...args);
this.logs.push({ t: Date.now(), l: "log", c: args });
setTimeout(() => this.p?.resolve(), 0);
}

clear() {
this.logs = [];
setTimeout(() => this.p?.resolve(), 0);
}

async *display(fn = (v) => v) {
while (true) {
yield this.logs.map(fn);
await this.p.promise;
this.p = Promise.withResolvers();
}
}
}
Insert cell
Console = Logger
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more