Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将此代码转换为链接承诺?_Javascript_Jquery_Promise - Fatal编程技术网

Javascript 如何将此代码转换为链接承诺?

Javascript 如何将此代码转换为链接承诺?,javascript,jquery,promise,Javascript,Jquery,Promise,我想创建一个JS代码来创建许多嵌套页面。下面是创建5个嵌套页面(5个深度级别)的示例 如何转换上述代码以创建任意数量的嵌套页? 目前,我正在使用jQuery。如果您建议任何Promise库来解决此问题,这是很好的 谢谢。简单的递归就可以了 function createNestedPages(spaceKey, parentPageId, numberOfPages) { if (numberOfPages <= 0) { return; } this._genPag

我想创建一个JS代码来创建许多嵌套页面。下面是创建5个嵌套页面(5个深度级别)的示例

如何转换上述代码以创建任意数量的嵌套页? 目前,我正在使用jQuery。如果您建议任何Promise库来解决此问题,这是很好的


谢谢。

简单的递归就可以了

function createNestedPages(spaceKey, parentPageId, numberOfPages) {
  if (numberOfPages <= 0) {
    return;
  }

  this._genPage(spaceKey, parentPageId).done(function (createdPage) {
     createNestedPages(spaceKey, createPage.id, numberOfPages - 1);
  });
}
函数createNestedPages(空格键、parentPageId、numberOfPages){

如果(numberOfPages承诺被设计为链接,那么从一个
done
返回的内容将由链中的下一个
done
解决:

this._genPage(spaceKey, parentPageId)
    .done(function (createdPage) {
       return self._genPage(spaceKey, createdPage.id);
    }).done(function (createdPage) {
       return self._genPage(spaceKey, createdPage.id);
    }); // etc
可以进行一些简单的递归(甚至循环),使其达到任意深度

function genPagesRecursive(spaceKey, id, depth){
   if(depth == 0){
      return 'Data Generated';
   }

   return self._genPage(spaceKey, id).done(function(createdPage){
       return genPagesRecursive(spaceKey,id,--depth);
   })
}
您甚至可以在调用递归方法时链接另一个
done

genPagesRecursive(spaceKey, creadtedPage.id, 5).done(function(msg){
     Util.showSuccessMessage(msg);          
});

使用递归怎么样?你的意思是
return genPagesRecursive(spaceKey,id,--depth)
在递归示例中完成了吗?@ste2425谢谢-中途更改了方法名称。我测试过,效果很好。谢谢@Jamiec。我没有足够的分数来投票给答案:(
genPagesRecursive(spaceKey, creadtedPage.id, 5).done(function(msg){
     Util.showSuccessMessage(msg);          
});