1

トップに到達するまで階層をクロールし、構造を含むオブジェクトで解決する約束ベースの関数を作成しました。コードに関する私の唯一の不満は、関数本体の外側で変数を変更していることです。つまり、それは純粋な関数ではありません。私は JavaScript のクロージャを調査し、それらの些細な使い方を完全に理解しました。しかし、それらが私の機能を純粋にするのにどのように/どのように役立つかを理解するのに苦労しています。これまでのところ、クロージャーを作成しようとする私の試みは、変数を変更するのではなく、変数を上書きするだけでした。グローバル変数を使用した問題のコードは次のとおりです。

/* I want to move these variables inside function body to purify 'getPriorRows'*/
let priorRows = {}, level = 0;

const getPriorRows = id => new Promise(resolve => {
  fetch(`/api/org/${id}`).then(result => {

    /* global varaiables are modified here */
    priorRows[level++] = result;

    if (result.parentID) resolve(getPriorRows(result.parentID));
    else resolve(priorRows);

  });
});

getPriorRows('123432').then(result => console.log(result));

この問題に関するご意見をお待ちしております。

4

2 に答える 2