Недавно мне пришлось создать пользовательский интерфейс (UI) без наличия конечных точек серверной части. Основное внимание было уделено тому, чтобы сделать пользовательский интерфейс максимально отзывчивым, чтобы пользователь мог видеть, когда происходит действие.
В основном это означает, что при выполнении вызова AJAX пользовательский интерфейс должен указать это и соответствующим образом обновиться после завершения вызова.
Чтобы помочь в разработке пользовательского интерфейса, я создал функцию для имитации вызовов AJAX. Функция способна:
Код TypeScript приведен ниже (полный пример кода со строкой документации см. в сути):
export async function delay( timeout: number, probability?: number, result?: T ): Promise { return new Promise ((resolve, reject) => { setTimeout(() => { if (!probability || probability 1) { resolve(result); return; } const hit = Math.random(); if (hit Чтобы использовать эту функцию:
async function handleButtonClick() { // Update the UI to show a loading indicator. try { // highlight-start // Make the call take 3 seconds, with a 10% chance of failure, // and return an array of users. const result = await delay(3000, 0.9, [ { email: '[email protected]', username: 'User 1', }, ]); // highlight-end // Update the UI when the call completes succesfully. } catch (err: any) { // Update the UI when the call fails. } }Версия JavaScript той же функции ниже:
export async function delay(timeout, probability, result) { return new Promise((resolve, reject) => { setTimeout(() => { if ( !probability || typeof probability !== 'number' || probability 1 ) { resolve(result); return; } const hit = Math.random(); console.log(hit, probability); if (hitЭтот пост был впервые опубликован на сайте cheehow.dev
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3