我创建了一个基于 promise 的函数,它爬上一个层次结构,直到它到达顶部,并使用包含该结构的对象进行解析。我对代码的唯一抱怨是我修改了函数体之外的变量,这意味着它不是纯函数。我研究过 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));
非常感谢您对此事的任何意见。