с task, другой с setTimout и задаю ему задержку 11 сек, и возвращаю Promise.all() с этими двумя промисами https://www.codewars.com/kata/58d014421c694f71630000bc/train/javascript
const DELAY = 11000; function antiOptimizeAsync(task) { // Let's make this inefficient return new Promise(resolve => { const start = new Date(); const res = task(); const time = new Date() - start; setTimeout(resolve, DELAY - time, res); }); }
async function antiOptimizeAsync(task) { const promise = new Promise((resolve) => setTimeout(resolve, 1500)) await promise; return task() }
and immediately returns a Promise подозреваю, имеется в виду, что нужен сразу return
Там сказано, что таск сам тоже может занимать до 10 сек, и нужно чтоб промис ресолвился примерна за 11 сек с начала вызова функции
а 1500 откуда значение?)
там максимум 10 секунд функция, а таймаут у кодварса 12, поэтому, наверное
а через Promise.all есть же решение тоже?
но это не канает, поскольку: at least 11 seconds (and at most 12 seconds)
А вот промис алл возможно сработает
просто я в консоли через него решал, вроде все работает, а на кодварс ошибку выдает
цитата: Пара вопросов: Не похоже, что эта ката проверяет, что функция выполняется в указанном временном окне (мое решение настроено на запуск на 1500 мс: https://www.codewars.com/kata/reviews/58d1547353e019d4250003da/groups/5b368c2d15535073480011f3 ) Описание нуждается в обновлении; Ката Voile не было опубликовано.
на кодварс много кривых описаний и тестов. Это же не Святое Писание
через задержки можно так, по идее, если нигде не накосячил: const { performance } = require('perf_hooks'); function antiOptimizeAsync(task) { return new Promise(async r => { const start = performance.now(); const result = await task(); setTimeout(() => r(result), 11000 - (performance.now() - start)) }); } через Promise.all - не выйдет, наверное, поскольку нужно вернуть результат выполнения таски
Return promise.all(task, 11sekPromise).then(return taskResult)
ну разве что так, да, выбрать из массива. я имел в виду, что напрямую не выйдет
function antiOptimizeAsync(task) { return new Promise.all([ task, setTimeout(() => {}, 11000) ]).then(result => result[0]); } ну да, всё отлично
Че то такое не работает на кодварс)
какие тесты валятся?
TypeError выдает TypeError: Promise.all is not a constructor , странно на самом деле)
new лишнее написано
ой да, забыл стереть от обычного промиса)
Обсуждают сегодня