无限期地循环承诺直到被拒绝

Cyr*_*lle 2 javascript loops promise es6-promise

我有一个执行一些异步工作并返回 a 的函数,Promise我想无限期地执行这个函数,直到rejected承诺。

类似于以下内容:

doSomethingAsync().
    .then(doSomethingAsync)
    .then(doSomethingAsync)
    .then(doSomethingAsync)
    // ... until rejection
Run Code Online (Sandbox Code Playgroud)

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

我找到了几个可能的答案,但似乎对我的情况没有任何作用。

如果有人有解决方案,我会很高兴,因为我找不到任何东西!

谢谢。

Den*_*ret 5

你可以做

(function loop(){
     doSomethingAsync().then(loop);
})();
Run Code Online (Sandbox Code Playgroud)

但是看着你的笔,并不清楚拒绝应该来自哪里。如果您想在用户单击按钮时停止重复操作,您可以在按钮处理中更改状态,然后执行

(function loop(){
     doSomethingAsync().then(function(){
          if (!stopped) loop();
     });
})();
Run Code Online (Sandbox Code Playgroud)