SAPUI5. Мой почтовый ящик. Асинхронное обновление вложений - PullRequest
0 голосов
/ 06 августа 2020

Я использую стандартную библиотеку SAP: Inbox.

в классе библиотеки S3.controller при нажатии на значок вложений выполняется onTabSelect событие, ведьма делает

this.fnDelegateAttachmentsCreation();
this.fnFetchDataOnTabSelect("Attachments");
this.fnHandleAttachmentsCountText("Attachments");
this.fnHandleNoTextCreation("Attachments");
break;

fnFetchDataOnTabSelect делает асинхронный вызов. Во время этого вызова fnHandleAttachmentsCountText уже выполняется, поэтому обновление количества вложений происходит до того, как запрос вложений будет готов. Поскольку запрос вложений готов, обновление заголовка не выполняется.

На скриншоте - AttachmentCountText «Attachnents (1/1)», который исходит из ранее выбранного элемента. Это должно быть «Вложения (2/2)».

enter image description here

Also if response comes too quick, then view changes to loading view after it received the answer from request. If list of attachments was updated from request callback, then it should not be updated second time.

Here it seems, that there is something on loading, but request is already finished.

введите описание изображения здесь

Как можно расширить папку «Входящие», чтобы обновить заголовок и содержимое вложения после того, как запрос будет готов?

1 Ответ

0 голосов
/ 07 августа 2020

На самом деле я не знаю, как работает приложение, но я хочу попробовать.

Поскольку это асинхронная функция, вы всегда можете дождаться выполнения функции, пока она не будет выполнена. Итак, в вашем случае вы можете попытаться установить ключевое слово await перед функцией.

await fnFetchDataOnTabSelect("Attachments");

Теперь он будет ждать в этой позиции, пока не завершит вызов функции, прежде чем он вызовет следующие функции. В дополнение к этому вам также необходимо установить верхнюю функцию onTabSelect на async. В итоге это должно выглядеть примерно так.

onTabSelect: async function() {
    // ...
    this.fnDelegateAttachmentsCreation();
    await this.fnFetchDataOnTabSelect("Attachments"); 
    this.fnHandleAttachmentsCountText("Attachments");
    this.fnHandleNoTextCreation("Attachments");
    // ...
}

Хотя Web IDE может показывать вам ошибки, она работает, поскольку это официальный JavaScript API.

...