var request = require("request");
function more() {
var url = "..."; //... - сайт, к которому выполняется реквест
request(url, function(error, response, body) {
return body; // body - текст, который выводит сайт
});
};
more()[0];
var request = require("request");
// создаем класс для кэширования результатов запросов
class СacheRequest {
// конструктор
constructor(handler){
// создаем ассоциативный массив для кэширования результата
this.cache = {};
}
// основной метод класса, предназначен для получения данных по ссылке
// принимает url в качестве параметра
// возвращает выполненный промис если запрос есть в кэше
// или промис в ожидании выполнения запроса
async get(url){
// если такой запрос уже был, возвращаем промис с результатом из кэша
if( this.cache[url] )
return Promise.resolve(this.cache[url]);
// иначе возвращаем промис с ожиданием результата
return new Promise((resolve,reject)=>{
// делаем запрос на указаный url
request(url, (error, response, body)=>{
// если ошибка - реджектим )
if( error )
return reject(error);
// иначе запоминаем в кэше ответ
this.cache[url] = body;
// и резолвим body
resolve(body);
});
});
}
// метод отчищает кэш
clear(){
this.cache = {};
}
}
// создаем экземпляр кэша
const cacheRequest = new СacheRequest();
// так как request асинхронный, то для того, чтобы получить
// результат запроса в "синхронном стиле" используем await
// await можно использовать только внутри асинхронной функции.
// для этой цели обернем блок с вызовами cacheRequest.get в
// само вызывающуюся асинхронную функцию
(async () => {
// выполняем запросы:
// запросим "http://google.ru/" (будет сделан фактический запрос)
let body = await cacheRequest.get("http://google.ru/");
console.log("\n\n\nBODY:", body, 111);
// еще раз запросим "http://google.ru/" (будет взято из кэша)
body = await cacheRequest.get("http://google.ru/");
console.log("\n\n\nBODY:", body, 222);
})()
// раз в сутки отчищаем кэш
setTimeout(()=>{
cacheRequest.clear();
}, 1000*60*60*24 ); // 1000*60*60*24 это количество миллисекунд в сутках
let exemple;
const updateExempleValue = () => {
if (exemple === undefined) { //Если переменная undefined то в любом случае стучимся к серверу
exemple = 'ok'; //Здесь ваша фукцния по заданию переменной, вмето 'ok'.
}
return exemple; //Возвращаем переменную
}