gpt4 book ai didi

javascript - 如何在同一个函数中使用不同的 uri

转载 作者:行者123 更新时间:2023-12-01 01:16:13 25 4
gpt4 key购买 nike

我正在尝试通过 url 实现下载功能

在 HTML 中,有 3 个按钮(下载、暂停、重新启动)调用 download_file()、pause22()、restart_test() 。

它们使用在 download_file() 中声明的相同变量 [req],其中包含请求对象。

如果我只调用一次就可以了。

但问题是我需要制作下载列表。所以每个download_file()需要使用不同的URL,并且它会被用户同时调用多次。另外,当请求结束时,需要在单击的按钮上显示一条消息。

我可以重用函数吗?

如果我通过 url 来制作每个不同的功能,那就太愚蠢了。

如何区分点击的内容?

js

function download_file(event, fileURL) {
req = request({
method: 'GET',
uri: fileURL,
});
var out = fs.createWriteStream(finalPath);
req.pipe(out);
req.on('data', function(chunk) {
received_bytes += chunk.length;
});
req.on('end', function() {
subW = test.substring(9, 18).trim();
$("." + subW).text('finished');
endV = 2;
});
}

//resume function
function restart_test() {
req = request({
method: 'GET',
uri: fileURL
});
var out = fs.createWriteStream(finalPath);
req.pipe(out);
req.on('data', function(chunk) {
received_bytes += chunk.length;
});
req.on('end', function() {
subW = test.substring(9, 18).trim();
$("." + subW).text('finished');
endV = 2;
});
}
//pause
$('#btn-pause').click(function(e) {
console.log('pause function called');
req.pause();
});

html

<tr>
<td class="test"><a class="checkBtn checkBtn2" onclick="download_file(event, '100mb.bin')">download</a></td>
<td><a class="pauseBtn pauseBtn2" id="btn-pause" value="ACTION">pause</a><a class="resumeBtn resumeBtn2" onclick="restart_test();" value="ACTION">restart</a></td>
</tr>
<tr>
<td class="test"><a class="checkBtn checkBtn2" onclick="download_file(event, '1000mb.bin')">download</a></td>
<td><a class="pauseBtn pauseBtn2" id="btn-pause" value="ACTION">pause</a><a class="resumeBtn resumeBtn2" onclick="restart_test();" value="ACTION">restart</a></td>
</tr>

最佳答案

我认为你应该将 req 保存到对象中。

JS

var listReqs = {};

function download_file(event, filename) {
var req = request({
method: 'GET',
uri: fileURL,
});
var out = fs.createWriteStream(finalPath);
req.pipe(out);
req.on('data', function(chunk) {
received_bytes += chunk.length;
});
req.on('end', function() {
subW = test.substring(9, 18).trim();
$("." + subW).text('finished');
endV = 2;
});
listReqs[filename] = req;
}

//resume function
function restart_test(filename) {
var req = listReqs[filename];
var out = fs.createWriteStream(final path);
req.pipe(out);
req.on('data', function(chunk) {
received_bytes += chunk.length;
});
req.on('end', function() {
subW = test.substring(9, 18).trim();
$("." + subW).text('finished');
endV = 2;
});
}
//pause
$('.pauseBtn2').click(function(e) {
console.log('pause function called');
var filename = $(this).attr('filename');
listReqs[filename].pause();
});

HTML

<tr>
<td class="test"><a class="checkBtn checkBtn2" onclick="download_file(event, '100mb.bin')">download</a></td>
<td><a class="pauseBtn pauseBtn2" filename="100mb.bin" value="ACTION">pause</a><a class="resumeBtn resumeBtn2" onclick="restart_test('100mb.bin');" value="ACTION">restart</a></td>
</tr>
<tr>
<td class="test"><a class="checkBtn checkBtn2" onclick="download_file(event, '1000mb.bin')">download</a></td>
<td><a class="pauseBtn pauseBtn2" filename="1000mb.bin" value="ACTION">pause</a><a class="resumeBtn resumeBtn2" onclick="restart_test('1000mb.bin');" value="ACTION">restart</a></td>
</tr>

关于javascript - 如何在同一个函数中使用不同的 uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54741212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com