StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
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.
41 lines
805 B
41 lines
805 B
4 years ago
|
export default class fileWriterSync {
|
||
|
constructor(writer, path) {
|
||
|
this.writer = writer
|
||
|
this.path = path
|
||
|
this._stack = Promise.resolve()
|
||
|
}
|
||
|
|
||
|
get stack() {
|
||
|
return this._stack
|
||
|
}
|
||
|
|
||
|
set stack(promise) {
|
||
|
this._stack = promise
|
||
|
}
|
||
|
|
||
|
write(content) {
|
||
|
return this._execute(this.writer.write, content)
|
||
|
}
|
||
|
|
||
|
async seek(position) {
|
||
|
await this.stack
|
||
|
this.writer.seek(position)
|
||
|
}
|
||
|
|
||
|
truncate(length) {
|
||
|
return this._execute(this.writer.truncate, length)
|
||
|
}
|
||
|
|
||
|
_execute(action, data) {
|
||
|
this.stack = this.stack.then(()=> {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
this.writer.onwriteend = resolve
|
||
|
this.writer.onerror = error => reject({path: this.path, error})
|
||
|
action.call(this.writer, data)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
return this.stack
|
||
|
}
|
||
|
}
|