浏览代码

Merge pull request #165 from ckeditor/i/6581

Other: Improved performance of processing (loading) long lists. Closes ckeditor/ckeditor5#6581.
Maciej 5 年之前
父节点
当前提交
c532dfd9aa
共有 1 个文件被更改,包括 11 次插入6 次删除
  1. 11 6
      packages/ckeditor5-list/src/converters.js

+ 11 - 6
packages/ckeditor5-list/src/converters.js

@@ -649,30 +649,35 @@ export function modelChangePostFixer( model, writer ) {
 	return applied;
 
 	function _addListToFix( position ) {
-		const prev = position.nodeBefore;
+		const previousNode = position.nodeBefore;
 
-		if ( !prev || !prev.is( 'listItem' ) ) {
+		if ( !previousNode || !previousNode.is( 'listItem' ) ) {
 			const item = position.nodeAfter;
 
 			if ( item && item.is( 'listItem' ) ) {
 				itemToListHead.set( item, item );
 			}
 		} else {
-			let listHead = prev;
+			let listHead = previousNode;
 
 			if ( itemToListHead.has( listHead ) ) {
 				return;
 			}
 
-			while ( listHead.previousSibling && listHead.previousSibling.is( 'listItem' ) ) {
-				listHead = listHead.previousSibling;
+			for (
+				// Cache previousSibling and reuse for performance reasons. See #6581.
+				let previousSibling = listHead.previousSibling;
+				previousSibling && previousSibling.is( 'listItem' );
+				previousSibling = listHead.previousSibling
+			) {
+				listHead = previousSibling;
 
 				if ( itemToListHead.has( listHead ) ) {
 					return;
 				}
 			}
 
-			itemToListHead.set( position.nodeBefore, listHead );
+			itemToListHead.set( previousNode, listHead );
 		}
 	}