Проблемы с получением свойств идентификатора при циклическом переборе всех идентификаторов

Мне интересно получить свойства всех элементов dbId. Для этого я просто перебираю свой массив dbIds и использую функцию getProperties, предоставляемую Forge Viewer.

  someFunction() {

    const instanceTree = this.viewer.model.getData().instanceTree;

    const allDbIds = Object.keys(instanceTree.nodeAccess.dbIdToIndex);

    console.log('all DbIds');
    console.log(allDbIds);

    // This will give the correct Properties
    // this.viewer.getProperties(5, (result) => {
    //   console.log(result)
    // })

    allDbIds.forEach((dbId) => {

      this.viewer.getProperties(dbId, (result) => {
        console.log('result:');
        console.log(result);

      }, (err) => {
        console.log('err');
        console.log(err);
      });
    });
  }

Когда я напрямую обращаюсь к определенному dbId, я получаю правильный массив свойств. Однако при просмотре всех dbId и вызове функции getProperties только первые два dbId возвращают свойства, а все остальные возвращают только пустые массивы. Вдобавок первые два массива слишком велики и, кажется, содержат другие свойства. -> Ссылка на вывод консоли

Кто-нибудь знает, что я здесь делаю не так? Уже спасибо!


person Daniel    schedule 14.12.2016    source источник
comment
выглядит и звучит как проблема с синхронизацией / асинхронностью ...   -  person Jeremy Tammik    schedule 14.12.2016


Ответы (1)


Вместо повторения свойств на клиентской странице лучшим подходом может быть одновременный запрос всех свойств через Model Derivative API. См. Эти ссылки:

https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-metadata-GET/

https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-metadata-guid-properties-GET/

person Stephen Preston    schedule 14.12.2016