素材牛VIP会员
想写一个通过http请求下载多个视频文件的函数,结果总是多了好几请求,请问问题在哪里
 随***@  分类:Node.js  人气:750  回帖:1  发布于6年前 收藏

    function loadsavesomets(urls,filenames,callback) {

        var dirPath = dir+'/';
        var filename = '';
        var i=0
        var url = '';
        
        function loadsaveonets() {
            if (i>=urls.length) {
                return false
            }
            console.log('开始下载第' + i + '个视频');
            
            url = urls[i];
            filename = filenames[i]+'.ts';
            var timer
            var writeStream
            var req

            //开始计时
            timer = setTimeout(function() {
                console.log('第' + i + '个视频下载超时,重新开始下载')
                req.abort()
                writeStream.end()
                
                loadsaveonets()
            }, 2*60*1000);

            if (i>=urls.length) {
                return false
            }else{

                writeStream = fs.createWriteStream(dirPath + filename);

                req = superagent.get(url)
                req.pipe(writeStream);

                writeStream.on('close', function() {
                    console.log('第' + i + '个视频下载完成')
                    //清除计时
                    clearTimeout(timer)
                    i++
                    if (i==urls.length) {
                        console.log('所有ts下载完成')
                        
                        return false
                    }else if (i>urls.length) {
                        return false
                    }else{
                        
                        loadsaveonets()
                    }
                })
            }
        }

        loadsaveonets()
    }

实际上只有39个下载链接,这里出现了52个请求。
请问是req.abort()没有成功导致的还是writeStream.end()导致的

 标签:node.jsjavascript

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv4 码徒
Su***er JS工程师 6年前#1
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取