downloads.download()似乎是用于非交互式下载的最简单函数。在webextension中保存文件。但是,就错误处理而言,它不是最友好的用户功能。如果我正确理解文档,则一旦下载启动,它就会成功解析 - 但这并不意味着下载将完成成功。它只返回已经开始下载的downloadItem对象的id,而不是指向对象本身的指针,这似乎是更有用的。 (为了获取对象本身,我一直在运行基于id的downloads.search()查询。这个额外的步骤似乎效率低下。)
在我的测试中,我发现即使在提供指向页面未找到(错误404)地址的URL时尝试下载文件的简单情况下,downloads.download()也会很乐意下载& #34;文件"并且没有错误地解决了承诺。 downloadItem的状态将显示"已完成,"该文件将显示为"存在,"并且错误状态将是" undefined" (如果使用onChanged侦听器跟踪downloadItem属性的更改) - 但检查生成的4kb文件的内容将表明它只是404错误。
我目前的策略是尝试下载文件,等待听众触发更改以下载项目'状态,并检查downloadItems的完成状态和错误属性。但这一切似乎都是黑客和低效的。而且我仍然没有找到有效检测的最佳方法,例如404错误。
是否有一种更简单的方法可以安全地完成我缺少的webextensions文件下载,也许是一些我忽略的API?
(我一直试图在Firefox webextensions中执行此操作,但如果使用chrome更容易,我会尝试这样做。)