Size: a a a

JavaScript — русскоговорящее сообщество

2021 February 03

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Либо вместо циклов использовать асинхронные инструменты вроде setTimeout
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Но так как ты заказал циклы, ответ - нет
источник

IS

Ivan Savin in JavaScript — русскоговорящее сообщество
Mike Kharkov
Народ такой вопрос:
http://joxi.ru/YmEgJPahM1Zy8A
Стоит задача продемонстрировать асинхронность с подобным функционалом циклов внутри функций.
как это можно сделать корректно?
(что бы вторая функция отрабатывала раньше первой)
https://learn.javascript.ru/setimmediate

попробуйте, мб, вам и подойдёт
источник

MK

Mike Kharkov in JavaScript — русскоговорящее сообщество
Denys Mikhalenko
Либо вместо циклов использовать асинхронные инструменты вроде setTimeout
а асинхронная функция не является разве асинхронным исструментом?
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Является, но твои функции не асинхронные
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Ну, хотя я тут неправильно выразился
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Когда ты добавляешь async перед определением функции, она оборачивается в промис
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
async function foo() { return 42 }
эквивалентно
function foo() { return Promise.resolve(42) }
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Но суть в том, что это не значит, что код внутри функции будет выполняться параллельно с другим кодом
источник

MK

Mike Kharkov in JavaScript — русскоговорящее сообщество
допустим - тоесть функций аcинхронных в js не существует я правильно понимаю?
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Существуют конечно
источник

EK

Eugene Kannou in JavaScript — русскоговорящее сообщество
Ну, промис это та же самая асинхронная функция
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Но причина, почему твои циклы не работают так, как ты хочешь - потому что асинхронность !== многопоточность
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Асинхронность значит, что ты можешь прервать выполнение своей функции и вернуться к нему позже
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Многопоточности в js нет, многопоточность реализуется хостом
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
А доступ к ней реализован через асинхронные функции
источник

MK

Mike Kharkov in JavaScript — русскоговорящее сообщество
Denys Mikhalenko
Асинхронность значит, что ты можешь прервать выполнение своей функции и вернуться к нему позже
тоесть прямо руками могу это сделать или это делат евент луп автоматом всегда(или кто там за это отвечает в js)
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
То есть когда ты например совершаешь асинхронную дисковую операцию, ты можешь начать чтение файла вызовом fs.readFile и твой js код продолжит выполняться, а чтение файла будет выполнено хостом (node.js в данном случае) в другом потоке
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Когда чтение завершится, node.js положит в очередь вызов твоего колбека и когда-нибудь он вызовется )
источник

DM

Denys Mikhalenko in JavaScript — русскоговорящее сообщество
Простой пример
fs.readFile('file.json', () => { console.log('read done')})
while (true) {}
источник