You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome Downloads.search查询error属性异常及多条件查询问题

Chrome Downloads API 多错误值筛选解决方案

问题分析

你提到的chrome.downloads.search方法中,error字段仅支持单个错误值匹配,无法直接通过重复error键的对象实现多值筛选——JavaScript对象里重复的键会被覆盖,你写的代码最终只会保留最后一个error值(NETWORK_TIMEOUT),自然达不到预期效果。另外单独使用error查询返回所有结果,大概率是当前环境中下载项的状态或错误值刚好符合匹配条件,但核心问题还是多错误值的筛选方式不对。

可行解决方案

由于API本身不支持error的多值匹配,我们需要先查询所有状态为interrupted的下载项,再在结果中手动过滤出符合目标网络错误的条目:

方法1:使用异步函数(推荐)

async function getNetworkInterruptedDownloads() {
  // 先获取所有状态为interrupted的下载项
  const allInterrupted = await chrome.downloads.search({ state: 'interrupted' });
  // 定义需要匹配的网络错误列表
  const networkErrors = [
    'NETWORK_DISCONNECTED',
    'NETWORK_FAILED',
    'NETWORK_TIMEOUT'
  ];
  // 过滤出符合条件的项
  return allInterrupted.filter(item => networkErrors.includes(item.error));
}

// 调用示例
getNetworkInterruptedDownloads().then(downloads => {
  console.log('符合条件的下载项:', downloads);
});

方法2:使用回调函数

chrome.downloads.search({ state: 'interrupted' }, function(allInterrupted) {
  const networkErrors = [
    'NETWORK_DISCONNECTED',
    'NETWORK_FAILED',
    'NETWORK_TIMEOUT'
  ];
  const targetDownloads = allInterrupted.filter(item => networkErrors.includes(item.error));
  console.log('符合条件的下载项:', targetDownloads);
});

额外说明

确保你的扩展已声明downloads权限,在manifest.json中配置:

{
  "permissions": ["downloads"]
}

内容的提问来源于stack exchange,提问作者user2784466

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 18:45:33