Javascript 从后台运行的下载中获取下载状态
我要做的就是在这里。我的代码格式如下。当用户在/下载时提交表单,我调用downloadAllImages函数,downloadAllImages函数将所有下载放在后台,图像将存储在服务器上,因为它将异步运行,并在后台发送响应下载图像。。。给用户。我有一个会话变量req.session.download_status,我将在每次下载完成时递增该变量,用户将通过在/get_download_status提交表单获得其下载状态,该表单将返回req.session.download_status变量的值。但在后台运行的线程上获取下载状态是不起作用的,它会在本地更新控制台增量上打印的req.session.download_status值,并且用户只获取下面代码中的初始化值0。我正在使用express创建应用程序Javascript 从后台运行的下载中获取下载状态,javascript,node.js,session,asynchronous,express,Javascript,Node.js,Session,Asynchronous,Express,我要做的就是在这里。我的代码格式如下。当用户在/下载时提交表单,我调用downloadAllImages函数,downloadAllImages函数将所有下载放在后台,图像将存储在服务器上,因为它将异步运行,并在后台发送响应下载图像。。。给用户。我有一个会话变量req.session.download_status,我将在每次下载完成时递增该变量,用户将通过在/get_download_status提交表单获得其下载状态,该表单将返回req.session.download_status变量的值
var request = require("request");
function downloadAllImages()
{
...
...
...
req.session.download_status = 0;
for(var i=0; i<total_images;i++)
{
source = "path/to/file/which/will/be/downloaded";
url = "path/to/save/file";
download(source, url, i, function(message){
//updating the session.download_status variable in callback
req.session.download_status++;
console.log(req.session.download_status);
});
}
return res.send("Downloading images in background...");
}
var download = function(uri, filename,i,callback){
request.head(uri, function(err, res, body){
request(uri).pipe(fs.createWriteStream(filename)).on('close',function(){
console.log("image "+i+" downloaded!");
callback("ok");
});
});
}
因此,我需要的是一种方式,通过这种方式,后台线程可以更新应用程序中某个变量的值,在我的情况下,会话变量的值不起作用,这样我就可以通过在/get_download_状态下反复提交表单向用户显示下载进度,并在下载完成时停止。
请提出我能得到它的任何方法。谢谢。提供函数serving/get_download_status这只是返回req.session.download_status变量的值。app.post'/download_status',functionreq,res{ifreq.user{console.logdownload_status=+req.session.download_status;res.sendreq.session.download_status.toString;}其他{res send;}