diff --git a/packages/data-source/src/DataSourceManager.ts b/packages/data-source/src/DataSourceManager.ts index 0125d82d..cfdca078 100644 --- a/packages/data-source/src/DataSourceManager.ts +++ b/packages/data-source/src/DataSourceManager.ts @@ -74,21 +74,32 @@ class DataSourceManager extends EventEmitter { }); const dataSourceList = Array.from(this.dataSourceMap); - Promise.allSettled>(dataSourceList.map(([, ds]) => this.init(ds))).then((values) => { - const data: DataSourceManagerData = {}; - const errors: Record = {}; - values.forEach((value, index) => { - const dsId = dataSourceList[index][0]; - if (value.status === 'fulfilled') { - data[dsId] = this.data[dsId]; - } else if (value.status === 'rejected') { - errors[dsId] = value.reason; - } + if (typeof Promise.allSettled === 'function') { + Promise.allSettled>(dataSourceList.map(([, ds]) => this.init(ds))).then((values) => { + const data: DataSourceManagerData = {}; + const errors: Record = {}; + + values.forEach((value, index) => { + const dsId = dataSourceList[index][0]; + if (value.status === 'fulfilled') { + data[dsId] = this.data[dsId]; + } else if (value.status === 'rejected') { + errors[dsId] = value.reason; + } + }); + + this.emit('init', data, errors); }); - - this.emit('init', data, errors); - }); + } else { + Promise.all>(dataSourceList.map(([, ds]) => this.init(ds))) + .then(() => { + this.emit('init', this.data); + }) + .catch(() => { + this.emit('init', this.data); + }); + } } public async init(ds: DataSource) {