Все:
Я новичок в асинхронном программировании Node, интересно, как я могу написать обработчик запросов Express, который может обрабатывать трудоемкую тяжелую задачу вычисления без блока Express обрабатывая следующий запрос?
Я думал, что setTimeout может сделать это, чтобы помещать задание в цикл событий, но он по-прежнему блокирует другие запросы:
var express = require('express');
var router = express.Router();
function heavy(callback){
setTimeout(callback, 1);
}
router.get('/', function(req, res, next) {
var callback = function(req, res){
var loop = +req.query.loop;
for(var i=0; i<loop; i++){
for(var j=0; j<loop; j++){}
}
res.send("finished task: "+Date.now());
}.bind(null, req, res);
heavy(callback)
});
Я думаю, я не понимал, как работает setTimeout (мое понимание о setTimeout после этой задержки 1 мс приведет к обратному вызову в отдельном потоке/процессе, не блокируя другой вызов тяжелой), может ли кто-нибудь показать мне, как это сделать это без блокировки другого запроса на heavy()?
Спасибо