Skip to content

Instantly share code, notes, and snippets.

@Zig1375
Last active August 21, 2020 13:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save Zig1375/16fb3b175533d6d42a931a05b265d76e to your computer and use it in GitHub Desktop.
Save Zig1375/16fb3b175533d6d42a931a05b265d76e to your computer and use it in GitHub Desktop.
Тестовое задание

Задание

Задание для 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);
});

Пример test.js файла

При необходимости Вы можете добавить await перед вызовом фунций.

let a = 10;
let b = testQuery();
testResult(a + b);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment