我正在使用Express
根据POST
请求的正文构建一堆文件。每当应用收到POST Request
时,它都会调用一些长时间运行的函数来生成文件:
app.post('/test', function(req, res) {
buildMyFiles(req.body); // making files
res.send('got the post');
});
在创建所有文件之前,我不想发回任何回复。我怎么能这样做?
答案 0 :(得分:1)
您需要编写buildMyFiles
来支持异步回调事件:
app.post('/test', function(req, res) {
buildMyFiles(req.body, function(err) {
res.send('got the post');
});
});
function buildMyFiles(body, callback) {
/*
do lots of synchronous, long-running operations here
^ emphasis
if the build fails, define err (if the build succeeded, it'll be undefined)
then execute the callback function
*/
callback(err);
}
如果您希望构建器是异步的,可以考虑使用async
之类的东西来串行处理它们。由于我不知道您的POST请求是什么样的,我假设body.files
是一个数组而buildFile
是您可能编写的另一个异步函数:
function buildMyFiles(body, callback) {
async.each(body.files, function(file, callback) {
buildFile(file, function(done) {
callback()
});
}, function(err, results) {
// async building is complete
callback(err);
});
}