2009-03-11 6 views
0

데이터베이스에서 반환 된 값에 따라 모든 treeView 노드에서 일부 코드를 실행하고 특정 값이 반환 될 때까지이 작업을 반복하고 싶습니다.트리의 모든 노드에서 일부 코드를 실행하려면 어떻게해야합니까?

은 그 생각 :

  1. 내 모든 나무가 같은 CSS 클래스 그래서 난 데이터베이스로 이동 아약스를 사용하여 내 JQuery와 기능에 타이머를 가지고 JQuery와
  2. 에서 액세스 할 수있는 노드 줘 특정 값이 반환되면 타이머를 중지하십시오.

두 가지 질문이 있습니다. 각 노드에 대해 함수를 실행하려면 어떻게해야합니까? JavaScript로 타이머를 수행하는 방법은 다음과 같습니다.

 
$(function(){ 
    $('cssClassOfAllMyNodes').WhatFunctionToCallHere?((){

//How do I do Timer functionality in JavaScript? ForEachTimeInterval { //use Ajax to go to database and retrieve a value AjaxCallBackFunction(result) { if (result = 1) //How to stop the timer here? } } });

});

희망은 분명합니다. 고마워요


감사합니다. 그리고 디자인에 대해 의견을 말하기를 바랍니다.

내가 극복하려는 것은 Windows Wokflow 유형의 기능입니다. 여기에서 트리의 각 노드는 상태에 따라 이미지를 업데이트하며 상태는 트리 노드에 고유 한 키를 사용하여 데이터베이스를 쿼리하면됩니다. 나는 당신이 가지고있는 경우 이것을 구현하는 다른 방법에 대한 아이디어에 열려 있습니다. 에 타이머를 처리 할 수 ​​

$(function(){ 
    $('cssClassOfAllMyNodes').each(function(){ 
    // Do something with "this" - "this" refers to current node. 
    }); 
}); 

테 적절한 방법 : 덕분에 다시

답변

1

당신이 할 수있는 참조 할 수 있습니다 JS는 각각의 타임 아웃이나 인터벌에 대한 참조를 가지고 그것을 지우는 것이다.

그들 사이의 차이는 다음과 같습니다 전에 중지하지 않는 한

  • 시간 초과는 한 번만 실행됩니다;
  • 간격은 중지 될 때까지 무기한으로 실행됩니다.

    var delay = 2000; // miliseconds 
    var timer = setTimeout("functionToBeCalled", delay); 
    clearTimeout(timer); // whenever you need. 
    

    당신이 호출되는 함수의 이름 (setInterval을과 같은)에서는 setTimeout에 문자열을 전달할 수 있습니다 참고 : 같은

그래서 당신이 뭔가를 할 수 있습니다. 당신이 지연 될 수 있습니다 응답 및 서버에 연속 통화가 겹쳐 결국 수 있기 때문에, AJAX 요청에 대한 간격을 설정하지 않도록주의

var callback = function() { alert(1); }; 
var timer = setTimeout(callback, delay); 

: 또는 당신은 함수 자체에 대한 참조를 전달할 수 있습니다.

대신 setTimeout을 호출하고 응답이 도착하면 setTimeout을 다시 호출해야합니다.

+0

위대한 답변, 감사합니다. –

관련 문제