javascript - 想写一个通过http请求下载多个视频文件的函数,结果总是多了好几请求,请问问题在哪里
PHP中文网
PHP中文网 2017-04-11 11:47:29
[JavaScript讨论组]

    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()导致的

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号