我有一些代码,可以对一个软件提供多个并发调用,该软件提供一个休息界面来查询我们的系统。我们最近发现,足够多的并发调用(在30到100之间的某个位置)会导致软件失败并实际上破坏了支持的功能。
作为一种变通方法,我想通过解决我的代码块(如果有X个以上的并发调用未解决)来解决此问题,仅在旧调用解决后才发送新调用。由于我已经有许多出色的UI,所以我也希望通过更新共享的较低级别的Request方法来更改此行为。
我的“ request”方法返回一个promise,最终通过“ call” redux-effect在每个UI的redux Saga中调用。这意味着我需要能够从我的Request方法返回一个Promise,这意味着找到某种方式来返回一个Promise,直到更早的Requests解析后,它才尝试解决该请求。
我开始写自己的书,但是我没有简单的方法来“警告”一个承诺,告诉它以前的承诺已经完成。抛开自己的最佳方式,我能够弄清楚是否使用Promise.race,然后使用完全相同的callNextQueued方法来调用resolve和reject方法,并且从概念上讲,这通常感觉有点难看。
是否有更好的方法来实现?是已经执行过的API,还是一种干净的使用方式,可以保证在任何旧请求完成后,我都会扮演自己的逻辑来启动新请求?