我有一个执行一些异步工作并返回Promise的函数,并且我想无限期地执行此函数,直到答应了reject ed。

类似于以下内容:

doSomethingAsync().
    .then(doSomethingAsync)
    .then(doSomethingAsync)
    .then(doSomethingAsync)
    // ... until rejection

我做了一些CodePen,所以我可以测试潜在的解决方案:http://codepen.io/JesmoDrazik/pen/pbAovZ?editors=0011

我发现了几个可能的答案,但似乎对我的情况没有任何帮助。

如果有人有解决方案,我会很高兴,因为我什么都找不到!

谢谢。

最佳答案

你可以做

(function loop(){
     doSomethingAsync().then(loop);
})();

但是看着你的笔,不清楚拒绝来自何处。如果要在用户单击按钮时停止重复操作,可以在按钮处理中更改状态,然后执行
(function loop(){
     doSomethingAsync().then(function(){
          if (!stopped) loop();
     });
})();

08-25 11:23