例如,我发现一些基于Promise的API库,并且需要使用这个库在一定时间间隔内无限次数地发出API请求(像通常的后端循环)。这些API请求实际上是Promise链。
因此,如果我编写以下函数:
因此,如果我编写以下函数:
function r(){
return api
.call(api.anotherCall)
.then(api.anotherCall)
.then(api.anotherCall)
...
.then(r)
}
它会导致堆栈溢出吗?
我想到的解决方案是使用setTimeout对r
进行递归调用。
function r(){
return api
.call(api.anotherCall)
.then(api.anotherCall)
.then(api.anotherCall)
.then(()=>{setTimeout(r, 0)})
}
因此,只有在调用堆栈为空时,setTimeout才会实际调用r
。
这是一个好的解决方案吗?还是有一些标准方法可以递归地调用promises?
p
- 这不是和在循环中调用then
一样吗? - GALIAF95r
函数。 - GALIAF95