Verilən sinxron funksiyası və millisekundlarda vaxt. Bu funksiyanın yeni versiyasını geri qaytarmaq lazımdır, onun icrası göstərilən vaxtla məhdudlaşdırılıb. Əgər funksiya müəyyən vaxtda icra olunarsa, vədə alınan məlumatlarla həll olunur. Əks halda, vədə 'time limit exceeded' sətiri ilə rədd edilir.
Frontend
runOnce həllində apply metoduna niyə ehtiyac ola bilər?
/** * Lazımi olan, müəyyən millisekund müddətində "yuxuya getmək" və sonra uğurla bitmək üçün asinxron funksiya yazmaqdır * / function sleep(duration) { } // Nümunə const startTime = Date.now(); console.log("yuxuya getməyə başlayır..."); sleep(2000).then(() => { console.log("2 saniyə sonra ayıldım!"); console.log("Keçən vaxt: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("1 saniyə sonra ayıldım!"); console.log("Keçən vaxt: ", Date.now() - startTime); });
İnteqrasiya olunmuş obyektlərin prototiplərinə yeni metodlar əlavə etməkdə problemlər var mı?
/** * sumPromises funksiyasını həyata keçirin, bu * vədləri arqument kimi qəbul edir və * onların nəticələrinin cəmini qaytarır. * * Funksiya istənilən sayda arqument qəbul edə bilər. * Hər hansı bir vəd API-dən istifadə etmək olar. */ // Kod burada // İstifadə nümunəsi const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); sumPromises(promise1, promise2).then(console.log); // 3
/** * runOnce adlı sarmalayıcı funksiyanı həyata keçirin, bu * funksiya qəbul edir və yeni funksiya qaytarır. Yeni funksiya * yalnız bir dəfə çağırıla bilər, bütün növbəti * çağırışlar undefined qaytarır. * * Sarılmış funksiya arqumentlər qəbul edə bilər * və nəticə qaytara bilər. */ function runOnce(fn) { // sizin kod } const logHello = (name) => { console.log(`salam, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'salam, Oleg!' logHelloOnce('Olga'); // undefined
/* Array-də bütün ədədi dəyərlərin cəmını hesablamaq üçün funksiya yazmaq lazımdır. Etibarlı ədədi dəyərlər həmçinin, rəqəmlərlə başlayan sətirlər də daxil olmaqla, array-də hər hansı bir məlumat tipi ola bilər və düz olmayan strukturda ola bilər. **İnkişaf etmiş metodlar, məsələn, .flat, .flatMap istifadə edilə bilməz** */ function sum(arr) { // ... } console.log(sum([1, 'x', '2x', ['3', ['x2', '5']]]));
[ad] soruşdu: Oyunçunun MVP versiyasını həyata keçirmə nə qədər vaxt aldı?
/** * `asyncAuth(callback)` funksiyası callback qəbul edir, ona * xəta (birinci arqument) və məlumatlar * backend-dən (ikinci arqument) keçə bilər. * asyncAuth((error, data) => {}); * * Siz `auth()` funksiyasını həyata keçirməlisiniz, * bu `asyncAuth()`-u çağırır, amma Promise qaytarır. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * `tryAuth()` funksiyası `auth()`-u istifadə edir və, xəta baş verərsə, * N əlavə cəhd edir. * Bütün cəhdlər uğursuz olarsa, son xətanı qaytarır. * * @returns {Promise} */ function tryAuth(n) { }
/** * Üç kod bölməsi verilib. Hər bir console.log-un nəticəsini yazmaq lazımdır. */ var n = 1; function F(n) { n = 3; } F(n); console.log(n); var obj = { a: 1 }; function F1(o) { o.a = 5; } F1(obj); console.log(obj); var obj = { a: 1 }; function F2(o) { o = { hello: 1 }; } F2(obj); console.log(obj);
Yazılmış kodda ES6 standartının hansı yenilikləri istifadə olunur? arguments obyekti nədir və o, rest-parametrlərdən necə fərqlənir?
Arguments-i köhnə üsulla (ES5) massivə necə çevirmək olar, Array.from və spread-operatoru olmadan?
Layihədə istifadə etdiyiniz memarlıq yanaşmaları haqqında danışa bilərsinizmi? Feature-Sliced Design (FSD) ilə tanışsınızmı?
[ad] soruşdu: Özünüz pipeline-də əlavə işlər yazdınızmı?
[ad] xidmətlərin sürət göstəricilərinin optimallaşdırılması üzərində heç işlədinizmi?
[ad] soruşdu: Bir konkret vəzifə üzərində iş ümumiyyətlə necə təşkil olunurdu: onu kim gətirirdi və hazırlayırdı, təsdiqləmə prosesi necə keçirdi, həyata keçirilmə zamanı hansı suallar yaranırdı və onları necə həll edirdiniz?
Əgər funksiyanın uğurlu icrasından sonra timeout təmizlənməzsə, nə baş verər? Bu necə düzəldilə bilər və hər halda (uğur və ya səhv) timeout-u təmizləmək üçün hansı vəd metodu uyğundur?
Callback interfeysi olan və Promise qaytaran asyncAuth funksiyasını həyata keçirin. Sonra, asyncAuth istifadə edən və səhv baş verərsə, n əlavə cəhd edən tryAuth(n) funksiyasını həyata keçirin. Əgər bütün cəhdlər uğursuz olarsa, son səhvi qaytarır.
/** * `asyncAuth(callback)` funksiyası callback qəbul edir, onun içində * bir səhv (birinci arqument kimi) və məlumatlar * backend-dən (ikinci arqument kimi) keçə bilər. * asyncAuth((error, data) => {}); * * Siz `auth()` funksiyasını həyata keçirməlisiniz, * bu `asyncAuth()`-u çağırır, amma Promise qaytarır. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * `tryAuth()` funksiyası `auth()`-u istifadə edir və, səhv olarsa, * N əlavə cəhd edir. * Bütün cəhdlər uğursuz olarsa, son səhvi qaytarır. * * @returns {Promise} */ function tryAuth(n) { }
withTimeout funksiyasını həyata keçirin, bu funksiya bir funksiya və vaxt (millisaniyə) qəbul edir və yeni funksiya qaytarır. Əgər orijinal funksiya müəyyən edilmiş vaxtda icra olunmazsa, vəd rədd edilməlidir.