2 回答

TA贡献1886条经验 获得超2个赞
只有当循环位于当前函数内时,您才能从循环中中断。如果循环在函数之外(例如,.then回调),您就无法摆脱它。
而不是使用.then,将awaited 字符串分配给一个变量并检查它(并确保检查字符串,而'THE END'不是results数组):
async something() {
const results = [];
for (let i = 0;i < 999;i++) {;
const string = await rp('/api?id=1page='+i);
results.push(string);
if(string === 'THE END') {
break;
}
}
// do something with results
}
请注意,由于您将解析的值本身推送到results数组,因此无需调用Promise.all数组。

TA贡献1805条经验 获得超9个赞
考虑到这rp是请求您的网址的功能,这是我能想到的最简单的答案。
let results = []
for (let i = 0;i < 999;i++) {//if i is greater than or equal 999, the loop will end
await rp('/api?id=1page='+i).then(string => {
results.push(string)
if(results === 'THE END') {
//do stuffs you need to do
// break here
i = 1000;
}
})
}
添加回答
举报