Асинхронная печать в ESRI JavaScript API

Проблема с асинхронной печатью в ESRI JavaScript API

Я использую ESRI JavaScript API версии 2.8 и ArcGIS Server 10.1 на Amazon EC2. Синхронная печать работает, но вызывает таймаут на Heroku. При включении асинхронного режима получаю ошибку 500.

Вот пример моего кода:

function ПечатьКарты() {
  var инструментПечати = this;

  this.выполнитьПечать = function() {
    var параметры = new esri.tasks.ПараметрыПечати();
    параметры.карта = карта;
    параметры.шаблон = выбранныйШаблон;
    задачаПечати = new esri.tasks.ЗадачаПечати(urlПечати, {async: true});
    задачаПечати.выполнить(параметры, инструментПечати.печатьЗавершена, инструментПечати.ошибкаПечати);
  };

  this.печатьЗавершена = function(результат) {
    // Обработка результата
  };

  this.ошибкаПечати = function(ошибка) {
    // Обработка ошибки
  };
}

Как правильно настроить асинхронную печать? Есть ли примеры рабочего кода?

Дружище, у тебя там реально геморрой с этой печатью. Я бы на твоем месте для начала проверил логи на сервере - там может быть какая-то конкретика по 500-й ошибке. Еще вариант - попробуй отключить все фильтры и слои на карте перед печатью, иногда это помогает. А вообще, я бы посоветовал обновиться до 4.x версии API - там с асинхронной печатью намного меньше проблем. Ну и не забудь проверить настройки CORS на сервере, если используешь разные домены.

Привет! С асинхронной печатью в ESRI API бывают заморочки. У меня тоже были похожие проблемы. Попробуй добавить обработку таймаута в функцию ошибкаПечати. Например:

this.ошибкаПечати = function(ошибка) {
  if (ошибка.name === 'Timeout') {
    console.log('Превышено время ожидания. Повторяем запрос...');
    setTimeout(function() {
      инструментПечати.выполнитьПечать();
    }, 5000);
  } else {
    console.error('Ошибка печати:', ошибка);
  }
};

Еще можно попробовать увеличить время ожидания для задачи печати:

задачаПечати = new esri.tasks.ЗадачаПечати(urlПечати, {async: true, timeout: 300000});

Надеюсь, это поможет! Дай знать, если будут еще вопросы.

Знаешь, я сталкивался с похожей проблемой. Попробуй проверить настройки сервера печати на ArcGIS Server. Возможно, там стоит ограничение на асинхронные задачи. Еще вариант - увеличить таймаут на стороне клиента. А ты пробовал использовать более новую версию API? В 4.x многие баги пофиксили. Если ничего не поможет, можно попробовать реализовать печать через собственный прокси-сервер.