Прикладной скрипт после вызова функции Пример() может выполнять другие задачи или вернуть управление пользовательскому интерфейсу.
Обработчик результата запроса будет вызван автоматически при готовности результата или при отмене/ошибке выполнения запроса.
Если во время опроса идентификации устройства выполняется активный сеанс приёма или проверки купюры, то идентификация купюроприёмника будет получена по окончании сеанса приёма или проверки купюры. Ожидание данных ограничено таймаутом (по умолчанию 5 секунд) — если за это время активный сеанс не завершится, то опрос идентификации закончится неудачей (будет получен ненулевой код ошибки). При асинхронном запросе пользовательский интерфейс на это время не блокируется.
var CashMatic = external;
//CashMatic - рекомендуемое имя для основного объекта
//объектной модели NDemia CashMatic
var Request = null; //ссылка на асинхронный запрос
// (объект CashMaticRequest)
function Пример()
{
Request = CashMatic.Cash.GetDeviceIdentification(
new ResultHandler("пример обработчика")
);
/*
Для упрощения примера пропускаем опрос протокола управления
купюроприёмника
(при необходимости см. предыдущие примеры)
метод GetDeviceIdentification при вызове с параметром:
1. интерпретирует параметр как ссылку на обработчик
результата запроса;
2. создаёт асинхронный запрос;
3. возвращает ссылку на асинхронный запрос,
не дожидаясь результата запроса.
В качестве обработчика результата мы создаём
объект ResultHandler (см. ниже);
Полученная ссылка на запрос сохраняется
в переменной Request.
*/
}
function ResultHandler(title)
/*
Эта функция инициализирует объект-обработчик запроса,
реализующий интерфейс CashMaticResultHandler.
Параметр title показывает, как прикладной скрипт может
добавить к создаваемому объекту собственные
свойства, не предусмотренные спецификацией
интерфейса CashMaticResultHandler.
*/
{
this.HandleResult = function(Result)
//Функция обработки результата запроса, реализует
// соответствующий метод интерфейса CashMaticResultHandler.
//Эта функция будет автоматически вызвана при готовности
// результата нашего запроса (в том числе при
// отрицательном результате, т.е. при ошибке или
// отмене запроса).
//Результат запроса передаётся в параметре Result как
// объект CashMaticResult.
{
//нулевой код результата означает отсутствие ошибок:
if(Result.Code == 0)
{
this.ShowResult(Result.Data.SerialNumber);
//вызываем демонстрационный метод нашего обработчика
// для отображения полученного результата.
//Result.Data содержит объект
// CashMaticCashDeviceIdentification,
// серийный номер купюроприёмника доступен
// через свойство SerialNumber этого объекта.
}
else
this.ShowResult(
"Ошибка опроса идентификации купюроприёмника"
);
};
this.ShowResult = function(text)
//Дополнительная функция нашего объекта,
// не предусмотренная спецификацией CashMaticResultHandler.
{
alert(this.title + ": " + text);
};
this.title = title;
//Дополнительное свойство нашего объекта,
// не предусмотренное спецификацией CashMaticResultHandler.
}