设置:
我使用的是javascript诉2.8来自ESRI,它本身使用dojo工具包v.1.6。我在亚马逊的ArcGIS服务器诉10.1上运行了EC2。
我可以使用javascript成功地执行一个PrintTask,它将JSON发布到我的服务器上,该服务器运行一个进程并将一个PDF返回给客户机浏览器。但是这个请求是同步的,可能需要一两分钟,导致Heroku因H12错误而超时。
问题是:
当我将异步复选框切换到服务器上的上时,返回:
{"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;
};
}发布于 2015-04-23 04:24:04
当调用打印任务时,如果任务是异步的,则需要调用printTask.submitJob方法,而不是execute方法。
请参阅running.html
发布于 2012-09-15 02:06:46
如果是页面加载驱动的事件,则根据您的版本使用dojo.addOnLoad或dojo.ready。
如果您从用户事件(例如单击)调用Print,最简单的方法是在空闲时安排它运行
function whenIdle(ptr_fun) {
setTimeout(ptr_fun, 1);
}
whenIdle(Print);https://stackoverflow.com/questions/12431283
复制相似问题