【发布时间】:2020-09-05 16:24:28
【问题描述】:
我正在尝试在 Postman 上运行一些 JavaScript 代码,但我找不到让它按照我需要的顺序运行的方法。这就是我想要做的:
- 检索 API 响应并验证“待处理”数组是否包含任何项目
- 如果 id 存在,我会将记录的 id (orderId) 保存在环境变量中以在我的实际请求中使用
- 此时我将设置 found = true 并在它离开 setTimout 函数时中断循环
注意:我创建了一个函数来在尝试之间引入 400 毫秒的延迟,因为它将允许填充待处理的数组
var found = false;
var counter = 0;
while (counter < 10) {
setTimeout(async () => {
var size = await response.json().pending.length;
if (size > 0) {
var orderId = response.json().pending[0].orderId;
pm.environment.set("current_order", orderId);
found = true;
}
}, [400]);
console.log(found);
if (found) { break; }
counter++;
}
我的问题是 setTimeout 函数之外的部分首先执行,所以它永远不会满足条件“如果(找到)”。它总是执行代码 10 次,即使在第一次尝试中找到了记录。
我的问题是:如何编写它以检查是否在每次尝试后都找到了记录,如果是肯定的则退出循环?
谢谢!
【问题讨论】:
-
代替“whiling”,您可以只使用递归函数。如果函数失败,则再次执行(如果需要,可以使用计数器),如果成功,则离开函数。
标签: javascript loops asynchronous async-await postman