/** * @author [Ahmed DCHAR]{@link https://github.com/dragoneel} * @license [BSD-3-Clause]{@link https://opensource.org/licenses/BSD-3-Clause} * * @file Todo * * @example Todo * */ class TAbstractDataConverter { constructor () { this._isProcessing = false this._queue = [] } convert ( file, parameters, onSuccess, onProgress, onError ) { this._queue.push( { file, parameters, onSuccess, onProgress, onError } ) if ( !this._isProcessing ) { this._processQueue() } } _processQueue () { if ( this._queue.length === 0 ) { this._isProcessing = false return } this._isProcessing = true const self = this const dataBloc = this._queue.shift() const data = dataBloc.file const parameters = dataBloc.parameters const onSuccess = dataBloc.onSuccess const onProgress = dataBloc.onProgress const onError = dataBloc.onError self._convert( data, parameters, _onSaveSuccess, _onSaveProgress, _onSaveError ) function _onSaveSuccess ( result ) { onSuccess( result ) self._processQueue() } function _onSaveProgress ( progress ) { onProgress( progress ) } function _onSaveError ( error ) { onError( error ) self._processQueue() } } _convert ( /*data, parameters, onSuccess, onProgress, onError*/ ) {} } export { TAbstractDataConverter }