3

セットアップ:

ESRIのjavascriptAPIv。2.8を使用していますが、ESRI自体はdojoツールキットv。1.6を使用しています。AmazonのEC2のWindowsでArcGISServerv。10.1を実行しています。

サーバーにJSONをPOSTするjavascriptを使用してPrintTaskを正常に実行できます。サーバーはプロセスを実行し、PDFをクライアントブラウザーに返します。ただし、このリクエストは同期的であり、1〜2分かかることがあるため、HerokuはH12エラーでタイムアウトします。

問題:

ArcGISサーバーで[]Asynchronousチェックボックスを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;
  };

}
4

2 に答える 2

1

印刷タスクを呼び出すとき、タスクが非同期の場合は、execute メソッドではなく、printTask.submitJob メソッドを呼び出す必要があります。

https://developers.arcgis.com/javascript/jshelp/intro_gp_running.htmlを参照して ください。

于 2015-04-23T04:24:04.577 に答える
0

ページ読み込み駆動イベントの場合は、バージョンに応じてdojo.addOnLoadまたはを使用します。dojo.ready

ユーザー イベント (クリックなど) から呼び出している場合Print、最も簡単な方法は、アイドル時に実行するようにスケジュールすることです。

function whenIdle(ptr_fun) {
    setTimeout(ptr_fun, 1);
}
whenIdle(Print);
于 2012-09-15T02:06:46.410 に答える