Здравствуйте, Ikemefula, Вы писали:
I>I>async function x() {let y=0; console.time(); for(let i=0;i<10000000;i++){ y+=Math.sin(i);} console.timeEnd(); }
I>
I>Код выполняется ажно 1 секунду и далее не тормозит Замени 10000000 на Infinity, узнаешь много нового.
да, согласен, мало итераци у меня было... однако со встроенным fetch(URL) работает не тормозя гуи хотя ччитать може и 1 час! (большой файд, медленный интернет)
I>Но вообще скучновато наблюдать, как ты открываешь для себя особенность JS, которой двадцать лет или больше
но async появились совсем недавно!! И из описания да и на практике для встроенных fetch(URL)
работает не тормозя гуи. Логично было ожидать что и самодельные async обладают свойствами встроенных в язык async ф-ий типа fetch()
И исходя из публичных док на мозиле
асинк должна немедлено после вызова НЕ начиная выполнять код внутри вернуть
в точку вызоа проимс. И далее что? Выполняется следующая строка и тд (но тогда когда же стартует выполнение тела асинк ф-ии?)
Или все же перед возвратом все же в самодельной ф-ии должно выполнится все тело внутри...?
Но тогда деза в доках!!
Вот в ф-иях генераторах в доках ясно — старт это вызов next() — возврат — yield()
А в асинк ф-иях где ".next()" ?! Получается на текущий момент самодельные не встроенные в язык async ф-ии это всего лишь кастрированные Генераторы?
Или я что-то не так запрограмил и async вообще не включается? (в этом коде никакого async не происходит!)
<script>
var x = 0;
var i = 0;
console.log("1 x=",x, " i=",i);
async function test()
{
console.log(" START async test");
for(i=0; i<10000000; i++)
{
x += Math.sin(i)+Math.cos(i*7.5);
};
console.log("END async test");
};
console.log("2 x=",x, " i=",i);
test();
console.log("3 x=",x, " i=",i);
</script>