1

这可能只是“周五 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 样式

4

0 回答 0