Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2019 July 30

SV

Sergey Vats in NodeUA - JavaScript and Node.js in Ukraine
@nazarkk разве не 10 должна записатся в файл? Обьясни пожалуйста что значит рандомная очередь, writeFile должен отработаь после фора, значит последним числом будет i = 10, соответственно в файле должно быть записано число 10)
источник

AK

Anton Kovalenko in NodeUA - JavaScript and Node.js in Ukraine
@svatz прочитай як працює івент-луп і зразу все стане на свої місця)
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Переведу вопрос.
Есть ивентлуп. В нем определенные операции выполняются в определенной его части. Операции ввода-вывода (как то запись в файл) в одной части. Обычный жаваскрипт в другой, а, например, setImmidiate в третей. Так вот следуя этой логике сначала должен выполнится цикл for и глобальная переменная i должна установться в 10. Потом уже по окончании пользовательского жаваскрипта должна пройти фаза ввода вывода и по идее в файл должно записаться именно 10. При любом раскладе.
источник

🏡К

🏡 Назар Калитюк... in NodeUA - JavaScript and Node.js in Ukraine
Sergey Vats
@nazarkk разве не 10 должна записатся в файл? Обьясни пожалуйста что значит рандомная очередь, writeFile должен отработаь после фора, значит последним числом будет i = 10, соответственно в файле должно быть записано число 10)
це setTimeout з var так працює. А тут по іншому, так зроблено в самій writeFile
источник

L

Lёsha🕇☖ in NodeUA - JavaScript and Node.js in Ukraine
источник

AK

Anton Kovalenko in NodeUA - JavaScript and Node.js in Ukraine
@m03geek а змінна i не буде записуватись в скоуп функції writeFile?
источник

SV

Sergey Vats in NodeUA - JavaScript and Node.js in Ukraine
@nazarkk так-то ивент луп для всех одинаково работает, почему здесь поведение хромает)
источник

SV

Sergey Vats in NodeUA - JavaScript and Node.js in Ukraine
@m03geek можешь обьяснить?
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Так в этом и суть вопроса. Ибо fs.write, как и setTimeout - это джаваскриптовые функции и работают с переменными они одинаково
источник

🏡К

🏡 Назар Калитюк... in NodeUA - JavaScript and Node.js in Ukraine
Sergey Vats
@nazarkk так-то ивент луп для всех одинаково работает, почему здесь поведение хромает)
а де не хромає?
источник

🏡К

🏡 Назар Калитюк... in NodeUA - JavaScript and Node.js in Ukraine
він запускає запис по черзі від 0 до 10. А відбувається запис в тому порядку в якому відбувається. В файл пише не нода
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Sergey Vats
@m03geek можешь обьяснить?
Прям так с ходу да еще вечером нет :)
источник

AK

Anton Kovalenko in NodeUA - JavaScript and Node.js in Ukraine
там різниця в тому шо i передається параметром в writeFile, а якби i була в колбеку який викликався з івент-лупа то було б 10
источник

🏡К

🏡 Назар Калитюк... in NodeUA - JavaScript and Node.js in Ukraine
const fs = require('fs');
const txt = 'file.txt';
for(i = 0; i < 10; i++) {
 console.log(i)
 setTimeout(function () {
   fs.writeFile(txt, i, (err) => {
       console.log(i, ' MASS I')
       if (err) {
         console.log(err.message)
       }
     });
 }, 2000)
}
источник

🏡К

🏡 Назар Калитюк... in NodeUA - JavaScript and Node.js in Ukraine
отак буде 10
источник

SV

Sergey Vats in NodeUA - JavaScript and Node.js in Ukraine
@Kovalenko26 тогда откуда берется число в файле? И что это мать его за число тогда
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
консоль лог то вообще отдельная тема, которая тоже работает асинхронно
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
@svatz из последнего что читал, то в ES2015 немного поменяли концепт очереди джобов.
Вот цитата:
It’s a way to execute the result of an async function as soon as possible, rather than being put at the end of the call stack.

Promises that resolve before the current function ends will be executed right after the current function.

I find nice the analogy of a rollercoaster ride at an amusement park: the message queue puts you at the back of the queue, behind all the other people, where you will have to wait for your turn, while the job queue is the fastpass ticket that lets you take another ride right after you finished the previous one.
источник

G

GNU/Vsevolod in NodeUA - JavaScript and Node.js in Ukraine
Alexander
консоль лог то вообще отдельная тема, которая тоже работает асинхронно
Недаром в расте i/o сделан буффером by design, ибо вывод — дорого
источник

AK

Anton Kovalenko in NodeUA - JavaScript and Node.js in Ukraine
нода сама напевно менеджить який колбек , в який момент потянути з івент-лупа, а число там буде те, яке записалось в скоупі writeFile  (но ето не точно))))
источник