/** * Мүнөздүү миллисекунддар санын "уктап" жана андан кийин ийгиликтүү аяктоо үчүн асинхрондуу функция жазуу керек * / function sleep(duration) { } // Мисал const startTime = Date.now(); console.log("уктап жатам..."); sleep(2000).then(() => { console.log("2 секунддан кийин ойгонуп жатам!"); console.log("Өтүп кеткен убакыт: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("1 секунддан кийин ойгонуп жатам!"); console.log("Өтүп кеткен убакыт: ", Date.now() - startTime); });
Frontend
Үч JavaScript код бөлүмүнүн ар бирине, консольдо эмне чыгарын аныктаңыз жана примитивдердин, объекттердин жана шилтемелердин кайра белгиленишинин жүрүм-турумундагы айырмачылыктарды түшүндүрүңүз.
Интеграцияланган объекттердин прототиптерине жаңы ыкмаларды кошууда көйгөйлөр барбы?
Неге runOnce чечиминде apply ыкмасын колдонуу керек болушу мүмкүн?
/** * sumPromises функциясын ишке ашырыңыз, ал * убада берүүчүнү аргумент катары кабыл алат жана * алардын натыйжаларынын суммасын кайтарат. * * Функция кез келген сандык аргументтерди кабыл алат. * Кандайдыр бир убада API колдонсо болот. */ // Код бул жерде // Колдонуунун мисалы const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); sumPromises(promise1, promise2).then(console.log); // 3
[аты] суроо берди: Оюнчунун MVP версиясын ишке ашыруу канчага созду?
/** * `asyncAuth(callback)` функциясы callback кабыл алат, ага * ката (биринчи аргумент) жана маалыматтар * бекендден (экинчи аргумент) өткөрүлүшү мүмкүн. * asyncAuth((error, data) => {}); * * Сиз `auth()` функциясын иштеп чыгышыңыз керек, * ал `asyncAuth()` чакырып, бирок Promise кайтарат. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * `tryAuth()` функциясы `auth()` колдонуп, жана ката болсо, * N кошумча аракет кылат. * Бардык аракеттер ийгиликсиз болсо, акыркы катаны кайтарат. * * @returns {Promise} */ function tryAuth(n) { }
/* Бардык сандык маанилердин суммасын эсептөө үчүн функция жазуу керек. Мөөнөттүү сандык маанилер ошондой эле жолдор болушу мүмкүн, алар цифрлар менен башталат. Мындай учурда, бул баштапкы цифрлардын тизмесин сандык мааниге колдонуш керек. Массив ар кандай маалымат түрлөрүн камтышы мүмкүн жана түз эмес болушу мүмкүн. **Интегралдык ыкмалар, мисалы, .flat, .flatMap колдонулбашы керек** */ function sum(arr) { // ... } console.log(sum([1, 'x', '2x', ['3', ['x2', '5']]]));
/** * runOnce деп аталган каптама функцияны ишке ашырыңыз, ал * ал функцияны кабыл алат жана жаңы функцияны кайтарат. Жаңы * функция бир гана жолу чакырылышы мүмкүн, бардык * кийинки чакыруулар undefined кайтарат. * * Капталган функция аргументтерди кабыл алууга жана натыйжаны кайтарууга болот. */ function runOnce(fn) { // сиздин кодуңуз } const logHello = (name) => { console.log(`салам, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'салам, ${name}!' logHelloOnce('Olga'); // undefined
Код жазууда ES6 стандартынын кайсы жаңылыктары колдонулат? Arguments объектиси эмне жана ал rest-параметрлерден эмнеге айырмаланат?
Arguments-ты эски жол менен (ES5) массивге кантип айландырууга болот, Array.from жана spread-операторсуз?
/** * Үч бөлүм берилген. Ар бир console.logтун жыйынтыгын жазуу керек. */ 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);
Жобада колдонгон архитектуралык жакындоолор жөнүндө айтып бере аласызбы? Feature-Sliced Design (FSD) менен таанышыңызбы?
Callback интерфейси бар жана Promise кайтарган asyncAuth функциясын ишке ашырыңыз. Андан кийин, asyncAuth колдонуп, жана ката болсо, n кошумча аракеттерди жасаган tryAuth(n) функциясын ишке ашырыңыз. Бардык аракеттер ийгиликсиз болсо, акыркы катаны кайтарат.
[аты] суроо берди: Белгілі бир тапшырма боюнча иш кандай уюштурулду: аны ким алып келди жана даярдады, бекитүү процесси кандай өттү, ишке ашырууда кандай суроолор пайда болду жана аларды кандай чечтиңиз?
withTimeout функциясын ишке ашырыңыз, ал функцияны жана убакытты (миллисекунддарда) кабыл алат жана жаңы функцияны кайтарат. Эгер оригиналдуу функция белгиленген убакытта ишке ашпаса, убада четке кагылышы керек.
Эгер функция ийгиликтүү ишке ашырылгандан кийин убакытты өчүрбөсө, эмне болот? Муну кантип оңдоого болот жана кайсы убада ыкмасы убакытты өчүрүү үчүн ылайыктуу болот (жыйынтык жана каталарда)?
/** * `asyncAuth(callback)` функциясы callback кабыл алат, анын ичинде * ката (биринчи аргумент катары) жана маалыматтар * backendтен (экинчи аргумент катары) өткөрүлүшү мүмкүн. * asyncAuth((error, data) => {}); * * Сиз `auth()` функциясын ишке ашырышыңыз керек, * ал `asyncAuth()` чакырып, бирок Promise кайтарат. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * `tryAuth()` функциясы `auth()` колдонуп, жана ката болсо, * N кошумча аракет кылат. * Бардык аракеттер ийгиликсиз болсо, акыркы катаны кайтарат. * * @returns {Promise} */ function tryAuth(n) { }
[аты] суроо берди: Қандай тест рамкасы колдонулду?
Эгер байланышты түзүү ылдамдыгы жана ортоңку сессиянын узактыгы белгилүү болсо, эң көп бир убакта иштеп жаткан WebSocket байланыштарынын санын кантип эсептөө керек?