每次请求不同的页面时,我都会循环访问此网址 /api?id=1&page=
,直到得到我想要的结果。
我不明白如何以及为什么我无法从请求中停止循环。
async something() {
let results = []
for (let i = 0;i < 999;i++) {
await rp('/api?id=1page='+i).then(string => {
results.push(string)
if(results === 'THE END') {
// break here
}
})
}
Promise.all(results).then(res => {
// do something
})
}
最佳答案
只有当循环位于当前函数内部时,才能中断循环。如果循环位于函数外部(例如,.then
回调),则无法摆脱它。
不要使用.then
,而是将await
ed字符串分配给变量并检查它(并确保检查字符串 'THE END'
,而不是结果
数组):
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
数组,因此无需在数组。
关于javascript - 打破请求- promise 的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61071934/