Задание для NodeJS v8.
Написать небольшой скрипт в который будет подключаться к основному проекту.
В скрипт будет передано имя JS файла, который необходимо выполнять в VM.
В VM нужно будет прокинуть 2 функции, к которым будет обращаться запускаемый скрипт.
Внизу документа имеется пример вызова.
Первая функция, которую необходимо иметь возможность вызывать из подключаемого скрипта:
В реальности это будет функция для выполнения запроса в базе данных, но для тестового задания функция должна вызывать следующую асинхронную функцию:
function testQuery(callback) {
setTimeout(function() { callback(100500); }, 2000);
}
Вторая функция, которую необходимо иметь возможность вызывать из подключаемого скрипта:
Функция для выдачи результата:
function testResult(result) {
callback(result); // В данном случае callback это функция переданная при инициализации
}
Вызываемые функции должна быть именно такими, но вы можете обернуть их в Promise при необходимости.
Из нюансов, подключаемый скрипт будет СИНХРОННЫМ!
Следовательно функция работы с тестовым запросом должна тоже быть синхронной.
Вы можете производить дополнительные обработки подключаемого скрипта, например обернуть его во что-то еще, главное вернуть результат в testResult
.
Вызываемые функции должны находиться в контексте основного скрипта, т.к. они работают с базой и возвращают результат.
Обрабатывать ошибки в скрипте не нужно, но если сделаете, это определенно будет плюсом.
Вы также можете производить любые действия над кодом, хранящимся в файле, имя которого передано при инициализации.
const vm = require('./your_script');
vm('test.js', (result) => {
console.log(result);
});
При необходимости Вы можете добавить await
перед вызовом фунций.
let a = 10;
let b = testQuery();
testResult(a + b);