トップに到達するまで階層をクロールし、構造を含むオブジェクトで解決する約束ベースの関数を作成しました。コードに関する私の唯一の不満は、関数本体の外側で変数を変更していることです。つまり、それは純粋な関数ではありません。私は 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));
この問題に関するご意見をお待ちしております。