@@ -515,8 +515,8 @@ export class OfflineAudioContext extends BaseAudioContext {
515515 return new AudioBufferSourceNode ( this ) ;
516516 }
517517
518- decodeAudioData ( source : string | ArrayBuffer | ArrayBufferView ) : Promise < AudioBuffer > {
519- return new Promise ( ( resolve , reject ) => {
518+ decodeAudioData ( source : string | ArrayBuffer | ArrayBufferView , successCallback ?: ( buffer : AudioBuffer ) => void , errorCallback ?: ( error : Error ) => void ) : Promise < AudioBuffer > {
519+ const ret = new Promise < AudioBuffer > ( ( resolve , reject ) => {
520520 if ( typeof source === 'string' ) {
521521 if ( looksLikePath ( source ) ) {
522522 const filePath = normalizeSourcePath ( source ) ;
@@ -557,6 +557,11 @@ export class OfflineAudioContext extends BaseAudioContext {
557557 } ) ,
558558 ) ;
559559 } ) ;
560+
561+ if ( successCallback ) ret . then ( successCallback ) ;
562+ if ( errorCallback ) ret . catch ( errorCallback ) ;
563+
564+ return ret ;
560565 }
561566
562567 startRendering ( ) : Promise < AudioBuffer > {
@@ -674,8 +679,8 @@ export class AudioContext extends BaseAudioContext {
674679 } ) ;
675680 }
676681
677- decodeAudioData ( source : string | ArrayBuffer | ArrayBufferView ) : Promise < AudioBuffer > {
678- return new Promise ( ( resolve , reject ) => {
682+ decodeAudioData ( source : string | ArrayBuffer | ArrayBufferView , successCallback ?: ( buffer : AudioBuffer ) => void , errorCallback ?: ( error : Error ) => void ) : Promise < AudioBuffer > {
683+ const ret = new Promise < AudioBuffer > ( ( resolve , reject ) => {
679684 if ( typeof source === 'string' ) {
680685 if ( looksLikePath ( source ) ) {
681686 const filePath = normalizeSourcePath ( source ) ;
@@ -716,6 +721,11 @@ export class AudioContext extends BaseAudioContext {
716721 } ) ,
717722 ) ;
718723 } ) ;
724+
725+ if ( successCallback ) ret . then ( successCallback ) ;
726+ if ( errorCallback ) ret . catch ( errorCallback ) ;
727+
728+ return ret ;
719729 }
720730
721731 resume ( ) : Promise < void > {
0 commit comments