Асинхронный вызов Ajax в API SCORM

Они - в значительной степени то же - единственная разница - то, что переменная, которую Вы передаете как out параметр, не должна быть инициализирована, но передача его как ref параметр, это должно быть установлено на что-то.

int x;
Foo(out x); // OK

int y;
Foo(ref y); // Error: y should be initialized before calling the method

Ref параметры для данных, которые могли бы быть изменены, out, параметры для данных, это - дополнительный вывод для функции (например, int.TryParse), которые уже используют возвращаемое значение для чего-то.

10
задан Dan Appleyard 7 August 2009 в 21:07
поделиться

2 ответа

Вы хорошо сформулировали проблему. После того, как SCO вызывает Initialize, данные CMI должны быть немедленно доступны для SCO для выполнения последующих вызовов GetValue. Однако выполнение синхронных вызовов AJAX не рекомендуется, если в запросе есть зависание, он может заблокировать весь браузер до тех пор, пока запрос не вернется или не истечет время ожидания. Решение состоит в том, чтобы предварительно загрузить все необходимые данные перед загрузкой SCO. В нашей реализации SCORM Engine мы предварительно загружаем все данные (CMI и последовательность) при запуске проигрывателя, а затем используем фоновый процесс для периодической фиксации грязных данных по мере прохождения учащимся курса. Может быть немного сложно гарантировать, что все данные правильно сохраняются при работе с комбинациями возможных сценариев запуска и выхода из окна, но это ' s конечно возможно. Вам нужно избегать любых запросов к серверу из вызова SCORM API, поскольку SCO часто наводняют LMS большими пакетами вызовов. Выполнение запросов к серверу в рамках этих вызовов может серьезно ухудшить опыт учащегося и снизить производительность сервера.

Mike

11
ответ дан 4 December 2019 в 01:02
поделиться

Мы подошли к этой проблеме, поставив в очередь данные CMI в API при запуске SCO. Сначала мы переходим на страницу запуска, которая загружает данные CMI в очередь API, а затем страница запуска фактически запускает SCO. Когда SCO вызывает intialize, мы просто перемещаем данные в CMI.

0
ответ дан 4 December 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: