اضطررت مؤخرًا إلى إنشاء واجهة مستخدم (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. } }نسخة جافا سكريبت لنفس الوظيفة أدناه:
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