Re[7]: JS vs. Native: сравнение на реальном нетривиальном пр
От: loginx  
Дата: 28.11.17 11:56
Оценка:
Здравствуйте, 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>
Отредактировано 28.11.2017 12:15 loginx . Предыдущая версия . Еще …
Отредактировано 28.11.2017 12:01 loginx . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.