#javascript #postman #math.js
#javascript #почтальон #math.js
Вопрос:
Я пытаюсь использовать math.js
в Postman.
Уже видел совет № 5 на их веб-сайте. Итак, в одном запросе у меня есть
postman.setGlobalVariable("mathjs", () => {
\ The full math.js library
});
В частности, это код math.js
, который я скопировал, на случай, если версия имеет значение.
Затем в запросе, который должен использовать библиотеку, я оцениваю глобальную переменную
eval(globals.mathjs)();
Я не часто использую JavaScript, так что, возможно, это что-то базовое, чего мне не хватает. В первом запросе определяется глобальная переменная mahjs
, значением которой является лямбда-выражение, вызывающее код библиотеки. Затем, во втором запросе, вызывается эта лямбда-функция. Пожалуйста, поправьте меня, если мое понимание пока неверно.
Вопрос: Как впоследствии вызывать функции, которые были определены библиотекой?
Я пробовал: math.multiply(x,y);
, Math.multiply(x,y);
, multiply(x,y);
. Ни один из них не является действительным. Функция, multiply
похоже, определяется библиотекой и используется как math.multiply(array, matrix)
.
Сравнение с повторным использованием, которое я уже сделал.
В одном запросе
postman.setGlobalVariable("utils", () => {
myfunction = function (x){
return x 1;
};
});
и в запросе, который его использует
eval(globals.utils)();
x = 1;
console.log(myfunction(x));
Это работает.
Комментарии:
1. Какую проблему вы пытаетесь решить?
2. @DannyDainton В конечном счете, вызов функций, которые определены
math.js
в некоторых тестах в Postman.3. Я понимаю эту часть, но из каких точек данных вы пытаетесь создать math.js ? Кажется немного чрезмерным, если все, для чего вы его используете, — это умножение чисел. Можете ли вы обновить вопрос, чтобы подробнее рассказать о том, как вы собираетесь использовать данные в запросах, здесь может быть другой маршрут, который вы могли бы использовать.
4. @DannyDainton Нет, хорошо, я сделаю более сложную линейную алгебру. Приведенный выше код предназначен для того, чтобы показать ту часть, которую я не понимаю (и ту часть, которую мне удалось выполнить), с примерами как можно более простыми. Если я научусь вызывать функции внутри
math.js
, я смогу написать остальное самостоятельно.5. Этот метод от Кевина Свибера, ведущего инженера по разработке решений Postman, может быть лучшим способом добавления модулей CDN и использования их в ваших коллекциях — explore.postman.com/templates/7170/browserify-cdn-modules
Ответ №1:
Это решает вашу проблему:
const mathjsUrl = "https://cdnjs.cloudflare.com/ajax/libs/mathjs/7.5.1/math.min.js";
pm.sendRequest(mathjsUrl, (err, response) => {
const mathjs = response.text();
(new Function(mathjs))();
let result = math.multiply(4,3);;
console.log(result);
});
Комментарии:
1. Это так, это так. Неплохо. Похоже, что для использования библиотеки было необходимо создать объект функции из текста библиотеки, вместо того, чтобы помещать его в лямбда-выражение и вызывать его. Я попробую это и посмотрю, смогу ли я изменить его, чтобы вставить текст напрямую, вместо того, чтобы запрашивать его у cloudflare. Я думаю, что в моем случае это будет выполняться на компьютерах, которые не подключены к Интернету.