У меня есть сервер Nodejs, я сначала загружаю список с длинным расчетом d3.js, который возвращаю клиенту, а затем загружаю еще один длинный список, чтобы предвидеть, что клиент его получит.
Я установил функцию, которая делает это, на async, но она заблокировала на нем сервер до завершения.
Итак, вопрос: как мне создать функцию, которая не блокирует полностью сервер? (Как поток в Java)
Код:
// Load nested data for id client
async function loadNestedData(body) {
table[body.id] = {};
table[body.id] = manager.getLongData(LongDataWithLongName);
}
app.post('/api/dynamic/', (req, res) => {
let body = req.body;
var nested_data = manager.getLongData(LongDataWithLongName);
res.json(nested_data);
loadNestedData(body);
});
app.get('/api/dynamic/id/:id?', (req, res) => {
// If nested data have finish to load
if (manager.getLongData(LongDataWithLongName)[req.params.id]!==undefined)
res.json(manager.getLongData(LongDataWithLongName)[req.params.id]);
else
res.json("wait");
});
Проблема связана с вашим кодом, который не был опубликован. В вопросе отсутствует stackoverflow.com/help/mcve.
А cache - это что именно? Какой модуль (я полагаю) вы использовали? Вы вообще вызываете функцию loadNestedData?
Я заменил длинную переменную примером, кеш - это модуль, который позволяет нам хранить данные в кеше для сервера.





Нам нужен код, чтобы лучше понять, что происходит.