将promise与递归函数一起使用

Ale*_*lls 1 javascript recursion node.js promise es6-promise

我试图找出是否有可能在递归函数中使用promise而不是标准回调。

我现在拥有的方式:

function recursive(data, cb){

     (function promiseProvider(data){

          return newThenable(data).then(function(val){
                 if(val.a){
                    cb(null, val);
                 }
                 else {
                    return promiseProvider(val);
                 }

          });

     })(data);

}
Run Code Online (Sandbox Code Playgroud)

这行得通,但是我无法弄清楚如何实现纯粹的promise实现。

也许这行得通吗?

  function recursive(data){

      return newThenable(data).then(function(val){
               if(val.a){
                  return // <<< ???
                 }
                 else {
                   return recursive(val);
                 }

        });

     }
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用。

Ber*_*rgi 5

假设您使用val结果参数调用回调,则只需

return val;
Run Code Online (Sandbox Code Playgroud)

then回调。而已。

function recursive(data){
     return newThenable(data).then(function(val){
         if (val.a){
             return val;
         } else {
             return recursive(val);
         }
     });
 }
Run Code Online (Sandbox Code Playgroud)