Как сделать синхронный вызов в рекурсивном методе?

Как сделать синхронный вызов в рекурсивном методе?

Я пытаюсь выполнить вызов и остановить рекурсивную функцию от продолжения выполнения до завершения другой функции.

Я пытался использовать обещание, но я просто не понимаю, что к чему помещать в часть .then() как рекурсивный вызов.

  const htmlString = '{amp}lt;table{amp}gt;{amp}lt;tr{amp}gt;{amp}lt;td{amp}gt;Bah{amp}lt;/td{amp}gt;{amp}lt;td{amp}gt;Pooh{amp}lt;/td{amp}gt;{amp}lt;/tr{amp}gt;{amp}lt;/table{amp}gt;'; const fragment = document.createRange().createContextualFragment(htmlString); function walkTheDOM(node, func) { func(node); node = node.firstChild; while (node) { walkTheDOM(node, func); node = node.nextSibling; } } function asynchronousCallWantingtoMakeSynchronous() { return new Promise((resolve, reject) ={amp}gt; { setTimeout(function() { return resolve ( console.log("should come before another recursive call")) }, 0) }); } walkTheDOM(fragment, function(node) { console.log(node) asynchronousCallWantingtoMakeSynchronous.then(function(){ }) }) 

что это на самом деле печатает:

  {amp}lt;table{amp}gt;...{amp}lt;/table{amp}gt; {amp}lt;tr{amp}gt;...{amp}lt;/tr{amp}gt; {amp}lt;td{amp}gt;Bah{amp}lt;/td{amp}gt; "Bah" {amp}lt;td{amp}gt;Pooh{amp}lt;/td{amp}gt; "Pooh" "should come before Pooh" 

Что я действительно хочу это:

  {amp}lt;table{amp}gt;...{amp}lt;/table{amp}gt; "should come before another recursive call" {amp}lt;tr{amp}gt;...{amp}lt;/tr{amp}gt; "should come before another recursive call" {amp}lt;td{amp}gt;Bah{amp}lt;/td{amp}gt; "should come before another recursive call" "Bah" "should come before another recursive call" {amp}lt;td{amp}gt;Pooh{amp}lt;/td{amp}gt; "should come before another recursive call" "Pooh" "should come before another recursive call" 

Имейте в виду, setTimeout — всего лишь пример, я просто хочу сделать асинхронный вызов синхронным.

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector