Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 October 27

<Zaur/> Abdulg... in NodeUA - JavaScript and Node.js in Ukraine
мне надо сделать так чтобы код при любых обстоятельствах код завершился по таймауту, не зависимо от того какой там scriptCode
источник

MI

Mykyta Ivanchenko in NodeUA - JavaScript and Node.js in Ukraine
"возможно придётся обернуть setInterval в Promise"
источник

<Zaur/> Abdulg... in NodeUA - JavaScript and Node.js in Ukraine
это если я пишу я могу так сделать) а мне надо выполнить полученный код и я не могу быть уверенным что оно там в Promise, надо при любом раскладе завершить работу скрипта по таймауту. Это реализуемо ?
источник

MI

Mykyta Ivanchenko in NodeUA - JavaScript and Node.js in Ukraine
const promisifiedScriptCode = `new Promise((resolve, reject) => {${scriptCode}})`
можно так попробовать
источник

<Zaur/> Abdulg... in NodeUA - JavaScript and Node.js in Ukraine
const vm = require('vm');
let scriptCode = `
new Promise(resolve => {
setInterval(_ => {
   console.log('log');
 }, 1000)
})
`

const context = {
 console,
 setInterval,
};
context.global = context;
const sandbox = vm.createContext(context);
const script = new vm.Script(scriptCode);
script.runInNewContext(sandbox, {
 timeout: 1000,
 microtaskMode: 'afterEvaluate',
});

не завершается
источник

MI

Mykyta Ivanchenko in NodeUA - JavaScript and Node.js in Ukraine
источник

MI

Mykyta Ivanchenko in NodeUA - JavaScript and Node.js in Ukraine
И похоже что не будет так работать
источник

MI

Mykyta Ivanchenko in NodeUA - JavaScript and Node.js in Ukraine
В самом конце написано
источник

<Zaur/> Abdulg... in NodeUA - JavaScript and Node.js in Ukraine
т.е. прервать setInterval ни как нельзя :(
источник

MI

Mykyta Ivanchenko in NodeUA - JavaScript and Node.js in Ukraine
Можно попробовать что-то подобное: https://stackoverflow.com/questions/11652530/node-js-vm-how-to-cancel-script-runinnewcontext
Но там ответу уже больше 7 лет + возможно надо добавлять менеджер процессов (чтобы нельзя было создать больше определённого кол-ва)
источник

<Zaur/> Abdulg... in NodeUA - JavaScript and Node.js in Ukraine
да я уже примерно тоже самое и сделал) только через worker, по таймауту делаю process.exit
источник
2021 October 28

AP

Andrii Pereverziev in NodeUA - JavaScript and Node.js in Ukraine
Ахах)
источник

AP

Andrii Pereverziev in NodeUA - JavaScript and Node.js in Ukraine
Ого) почти нет знакомых слов, наверное я ещё плохо знаю ноду
источник

BB

Bruian Blake in NodeUA - JavaScript and Node.js in Ukraine
Что показалось незнакомым?
источник

AP

Andrii Pereverziev in NodeUA - JavaScript and Node.js in Ukraine
1. Worker. Что это и для каких задач его использовать?
1.1. Изолят v8 у воркера. Что это?
1.2. Стек и куча
1.3. Цикл событий и аочередь микротасков.

2. Поток. Что это и для каких задач его использовать?
2.1. Как отличить легковесный поток от тяжеловесбного?

Вот эти вопросы для меня пока остаются без ответов. Может есть курс, который про это все рассказывает (только хороший, чтоб без воды)
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
источник

AP

Andrii Pereverziev in NodeUA - JavaScript and Node.js in Ukraine
так то я на nest.js пишу, там этого всего не видно, наверное под капотом глубоко зарыто
источник

AP

Andrii Pereverziev in NodeUA - JavaScript and Node.js in Ukraine
Спасибо!
источник

AP

Andrii Pereverziev in NodeUA - JavaScript and Node.js in Ukraine
Есть кто-то, кто уже прошел этот курс и считает лично для себя его полезным, таким, который дал нужную базу или дополнил уже имеющуюся? Интересен взгяд со стороны, не от создателей, а от пользователей
источник

BB

Bruian Blake in NodeUA - JavaScript and Node.js in Ukraine
Все со временем придёт. Начать наверное стоит почитывать Таненбаумана, но не сразу всего, а порциями. Разобраться как работает ОС. Ну и у Тимура подборка по ноде есть. Главное понять как и какие механизмы ОС эксплуатируются тем или иным инструментов.
источник