javascript - esri javascript 异步打印

标签 javascript asynchronous dojo esri arcgis-js-api

设置:

我正在使用 javascript API v. 2.8 from ESRI ,它本身使用 dojo 工具包 v. 1.6。我有 ArcGIS Server v. 10.1在 Amazon 的 EC2 中的 Windows 上运行。

我可以使用将 JSON 发布到我的服务器的 javascript 成功执行 PrintTask,该服务器运行一个进程并将 PDF 返回到客户端浏览器。但是这个请求是同步的,可能需要一两分钟,导致 Heroku 超时并出现 H12 错误。

问题:

当我在 ArcGIS 服务器上将 [ ] 异步复选框切换为 ON 时,我的 PrintTask 返回:

{"error":{"code":500,"message":"Error performing execute operation","details":[]}}

我不确定从这里到哪里去。有人有在 ArcGIS Server 上运行异步打印任务的示例或经验吗?

printTask 的 javascript 如下。有没有办法重写这个 javascript 使其更加异步或“非阻塞”?

代码

(为简洁起见进行了精简)

dojo.require("esri.tasks.PrintTask");

function Print() {
  var printTool = this;

  this.executePrint = function(){
    var params = new esri.tasks.PrintParameters();
    params.map = map;
    params.template = selectedTemplate;
    printTask = new esri.tasks.PrintTask(printUrl, {async: true});
    printTask.execute(params, printTool.printComplete, printTool.printError);
  };

  this.printComplete = function(result){
    dojo.place("<div><a href='" + result.url + "'></a></div>", printForm, "last");
  };

  this.printError = function(err){
    dojo.byId("printJob").innerHTML = err;
  };

}

最佳答案

调用打印任务时,如果任务是异步的,则需要调用 printTask.submitJob 方法,而不是执行方法。

https://developers.arcgis.com/javascript/jshelp/intro_gp_running.html

关于javascript - esri javascript 异步打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12431283/

相关文章:

Javascript:在 settimeout 之前调用 cleartimeout 可以吗?

javascript - 更改字符串中的所有其他字母(JavaScript)?每个新单词都从 0 开始

javascript - 如何防止值不超过 5 个字符?

javascript - 使用或不使用 Flash,使用或不使用 Javascript 播放嵌入式 YouTube 视频

java - 带有 Java 异步-> 同步转换器的 Mockito

javascript - 如何从 Firebase 存储获取 React.js 的异步图像数据?

error-handling - 允许 Dojo require() 失败

validation - Dojo 中的自定义 ValidationTextBox

asynchronous - 在蓝牙连接事件中发送消息时不接收 AppMessage 回调

javascript - 注册多个模块