esri javascript异步打印
esri javascript asynchronous print
设置:
我使用的是ESRI的javascript API v.2.8,它本身使用dojo工具包v.1.6。我在亚马逊EC2的Windows上运行ArcGIS服务器v.10.1。
我可以成功地使用javascript执行PrintTask,该javascript将JSON发布到我的服务器,该服务器运行一个进程并向客户端浏览器返回PDF。但此请求是同步的,可能需要一两分钟,导致Heroku超时并出现H12错误。
问题:
当我在ArcGIS服务器上将[]异步复选框切换到ON时,我的PrintTask返回:
{"error":{"code":500,"message":"Error performing execute operation","details":[]}}
我不知道从这里到哪里去。有人有在ArcGIS服务器上运行异步打印任务的例子或经验吗?
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方法,而不是execute方法。
请参阅https://developers.arcgis.com/javascript/jshelp/intro_gp_running.html
如果是页面加载驱动的事件,请使用dojo.addOnLoad
或dojo.ready
,具体取决于您的版本。
如果您从用户事件(例如点击)调用Print
,最简单的方法是安排它在空闲时运行
function whenIdle(ptr_fun) {
setTimeout(ptr_fun, 1);
}
whenIdle(Print);
相关文章:
- 使用javascript将动态表从一个html页面打印到另一个html页
- JavaScript打印功能使日历停止工作
- esri javascript异步打印
- JavaScript异步问题
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- $translateProvider.useStaticFilesLoader的Angular Translate异步定
- 异步facebook功能
- 异步并行错误
- jQuery/JavaScript在线公文包表单-打印样式表
- 在Redux中,我应该在哪里编写复杂的异步流
- 如何打印嵌套对象的所有值
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 打印预览没有应用程序页眉和页脚的html表格
- 正在打印图表上的文本
- 角度异步http自动完成
- 如何从SeleniumWebdriver获取异步Javascript响应
- Rhino打印功能
- 如何使用异步调用更改工厂的变量
- 在等待异步任务时永久循环
- 如何以异步方式打印q中的项目