ブラウジングと試行の夜の後、何かが機能していますが、これがすべて正しいのか、それとも改善できるのか疑問に思います。私はjavascriptもjquery/ajaxも頻繁に使用していないのでお願いします....
django アプリケーションでは、セロリ タスクを実行しています。タスクが完了したら、ブラウザを結果で更新したいと思います。
このために、setTimeout を使用して JavaScript タイマーを作成します (成功したら停止できます)。
今、私は複数のタイマーをサポートできるようにしたかったのです。更新したいフィールド (またはタスク) ごとに 1 つ。無名関数に新しいタイムアウトを設定する方法がわからないので、名前を付けてグローバルにしました。あれは正しいですか?これを行うより良い方法はありますか?
ポール・ボーマンズ
{% block jscript %}
<script>
function updateTaskResult(i, e) {
$.ajax({
type: "GET",
url: "{% url 'task_status' %}",
cache: false,
data: {task_id: e.id},
context: e
}).done(function(json) {
$(e).html("state=" + json.state + " result=" + json.result);
if(json.state !== "{{ success }}") {
setTimeout(updateTaskResult, 1000, i, e);
}
});
}
$("div.status").each(function(i, e) {
updateTaskResult(i,e);
});
</script>
{% endblock %}