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

Postman循环运行请求时shift未生效,仅执行数组首个值问题排查

Postman循环请求遍历数组失败问题修复

问题根源

你当前的脚本每次运行请求时,都会重新定义serials和chipIds数组——这意味着每次执行都是从初始的完整数组里shift第一个元素,用完后数组就被销毁了,下一次请求又会重新创建新的数组,自然永远只跑第一个值。

修复方案

把数组存到环境变量里(全局变量也可以,根据你的需求选),让数组的状态在请求循环中持久化。具体步骤如下:

  1. 先在Postman的环境变量里初始化两个数组:

    • 添加serials变量,值设为["C055UG44612513","C055UG44612514"]
    • 添加chipIds变量,值设为["38726716169857247275117912511","38726716169857247275117912512"]
  2. 修改请求脚本为:

// 从环境变量中获取数组,解析成JSON格式
let serials = JSON.parse(pm.environment.get('serials'));
let chipIds = JSON.parse(pm.environment.get('chipIds'));

// 取第一个元素设置为当前请求变量
pm.variables.set('currentSerial', serials.shift());
pm.variables.set('currentChipId', chipIds.shift());

// 更新环境变量里的数组状态
pm.environment.set('serials', JSON.stringify(serials));
pm.environment.set('chipIds', JSON.stringify(chipIds));

// 判断是否继续循环
if (serials.length > 0 && chipIds.length > 0) {
    pm.execution.setNextRequest("Register_device1");
} else {
    pm.execution.setNextRequest(null);
    // 可选:循环结束后重置数组,方便下次直接运行集合
    pm.environment.set('serials', JSON.stringify(["C055UG44612513","C055UG44612514"]));
    pm.environment.set('chipIds', JSON.stringify(["38726716169857247275117912511","38726716169857247275117912512"]));
}

关键说明

  • Postman的脚本每次运行都是独立的,本地定义的变量不会跨请求保留,必须用环境/全局变量存储需要持久化的数据。
  • 环境变量只能存字符串类型,所以存储数组时要转成JSON字符串,读取时再解析回数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:22:12