这可能只是“周五 5:00 后我想回家”的效果,但我被这个问题难住了。我有一个递归迭代器方法,我将调用每个方法:
function canIterate(obj) {
return (obj && (typeof obj === 'object' || Array.isArray(obj)));
}
function each(obj, onSuccess, recursive) {
if (canIterate(obj)) {
Object.keys(obj).forEach(function(key) {
var val = obj[key];
if (onSuccess && val && key) {
var quit = onSuccess(val, key);
if (false === quit) {
return false;
}
}
if (true === recursive) {
each(val, onSuccess, true);
}
});
}
}
这在大量数据上非常慢(我将在下面解释)。正如@raganwald 在这里解释的那样,蹦床是解决问题的方法。. 我的问题是:如何重构这个递归函数以利用蹦床技术?
所以我有一个轮询机制来请求树的当前状态,在这种情况下,它是一个位置树,它看起来像:
Hospital Campus Main
Main Building
Radiology Department
Lab 1
Lab 2
MRI Lab
Machine Cabinets
Spare Parts Shelf
树呈现在属于位置的事物网格中,对于网格中具有位置的每一行,我需要呈现树,将根设置为该行的位置。所以如果我们有:
Part | Location | Tree
widget MRI Lab MRI Lab > Machine Cabinets > Spare Parts Shelf
所以不要介意部分或全部这些可以在服务器端处理——我稍后会优化数据获取的性能。
有没有一种有效的方法来重写我的每种方法以使用 Trampoline 或CPS 样式?