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

如何从Google Cloud Tasks获取Firebase任务队列函数的自动生成任务名?

获取Firebase任务队列的任务名称并取消任务

默认调用taskQueue.enqueue()时,返回的Promise不会包含任务元数据,你需要在调用时添加returnTask: true配置项,让SDK返回完整的任务对象,其中就包含任务名称。

1. 入队时获取任务名称

调用enqueue方法时传入第二个参数配置returnTask: true,示例代码:

const admin = require('firebase-admin');
admin.initializeApp();

const taskQueue = admin.functions.taskQueue('your-queue-function-name');

async function addTaskToQueue() {
  // 传入任务负载和配置选项
  const task = await taskQueue.enqueue(
    { payloadKey: 'payloadValue' }, // 你的任务数据
    { returnTask: true } // 开启返回任务元数据
  );

  // 提取任务名称,格式为 projects/{项目ID}/locations/{区域}/queues/{队列名}/tasks/{任务ID}
  const taskName = task.name;
  // 将taskName存储到Firestore、实时数据库或其他存储系统,后续用于取消任务
  console.log('已入队任务名称:', taskName);
}

2. 使用任务名称取消任务

拿到存储的任务名称后,调用taskQueue.cancelTask()方法即可取消未执行的任务:

async function cancelTask(taskName) {
  try {
    await taskQueue.cancelTask(taskName);
    console.log('任务取消成功');
  } catch (err) {
    // 任务已执行、不存在或无权限时会抛出错误
    console.error('取消任务失败:', err.message);
  }
}

注意:只有当任务仍处于队列等待状态时,取消操作才会生效。如果任务已经开始执行、执行完成或被删除,cancelTask会返回错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:05:30