_loadData()

in viewer/src/provider/OpensfmDataProvider.js [346:393]


  _loadData(iterator) {
    this._load = new Promise((resolve, reject) => {
      const loaders = [];
      for (const item of iterator) {
        loaders.push(
          item.fetch
            .then(async data => {
              const file = {
                children: [],
                data,
                name: item.url,
                url: item.url,
              };

              if (this.loaded) {
                return this.add(file);
              }

              await this._initialize(file);
              this._load = null;
              resolve();
              return Promise.resolve();
            })
            .catch(error => {
              console.error(error);
              return Promise.reject(error);
            }),
        );
      }

      Promise.allSettled(loaders).then(responses => {
        let succeeded = false;
        for (const response of responses) {
          if (response.status === 'fulfilled') {
            succeeded = true;
            break;
          }
        }

        if (!succeeded) {
          this._load = null;
          reject(new Error('All file loads failed.'));
        }
      });
    });

    return this._load;
  }