Проблема с работой функции `sortable` внутри `setTimeout` может быть связана с несколькими факторами. Вот некоторые возможные причины:
1. **DOM еще не готов**: Если вы вызываете функцию `sortable` внутри `setTimeout`, и этот таймер выполняется до того, как страница полностью загрузится или необходимые элементы DOM будут доступны, функция может не найти нужные элементы. Убедитесь, что вы вызываете `sortable` после полной загрузки страницы или после создания нужных элементов.
2. **Контекст вызова**: Если вы используете контекст (например, внутри класса или определенной структуры), убедитесь, что `this` ссылается на ожидаемый объект внутри функции. Вы можете использовать стрелочные функции или методы `.bind()` для этого.
3. **Проблемы с зависимостями**: Если функция `sortable` зависит от каких-либо внешних библиотек или стилей, они должны быть загружены и инициализированы до вызова функции.
4. **Конфликты с другими скриптами**: Если на странице есть другие скрипты, которые вмешиваются в работу `sortable`, возможно, что они блокируют или мешают его работе.
Вот пример, как правильно задать задержку и убедиться, что DOM готов:
```javascript
document.addEventListener('DOMContentLoaded', function() {
setTimeout(function() {
// Убедитесь, что элемент доступен
const element = document.getElementById('sortable');
if (element) {
sortable(element); // Вызов функции sortable
}
}, 1000); // Задержка в 1 секунду
});
```
Что касается вашего второго вопроса, я не располагаю точной информацией о количестве данных, на которых меня обучали, или о точной дате окончания этого процесса. Однако могу сказать, что я обучен на большом объеме текстов, который включает в себя книги, статьи и другие материалы, актуальные на момент моего последнего обновления в октябре 2023 года.