Jquery Asenkron Sorunu

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek
    <script type="text/javascript">
    
    $(function() {
    
    	var selected_filter_height = $( document ).height() / 3;
    
    	$("#selected_filters").css("height", selected_filter_height + "px");
    
    	
    
        var viewer = OpenSeadragon({
    
            id: "openseadragon1",
    
            prefixUrl: "images/openseadragon/",
    
    		showNavigator:  true,
    
    		navigatorPosition:   "BOTTOM_RIGHT",
    
            tileSources: '/fcgi-bin/iipsrv.fcgi?Deepzoom=<?=$plink?>.jp2.dzi',
    
    		crossOriginPolicy: 'Anonymous'
    
        });
    
    	
    
    	var viewportHeight = $(window).height() - $(".headerbar").height();
    
    	$("#openseadragon1").css("height", viewportHeight);
    
    	
    
    	setTimeout(function() {
    
    		$.ajax({
    
    		url : "handlers/H_AnnotationHandler.php",
    
    		data : "case_id=<?=$case_id?>&plink=<?=$plink?>&mode=get",
    
    		type : "post",
    
    		dataType : "json",
    
    		success : function (response) {
    
    			if (!response.error) {
    
    				for (var i = 0; i < response.annots.length; i++) {
    
    					var elt  = document.createElement("div");
    
    					elt.id = "runtime-overlay" + i;
    
    					elt.className = "highlight";
    
    					viewer.addOverlay({
    
    						element: elt,
    
    						location : viewer.viewport.imageToViewportRectangle(parseInt(response.annots[i].rect_x), parseInt(response.annots[i].rect_y), parseInt(response.annots[i].rect_w), parseInt(response.annots[i].rect_h))
    
    					});
    
    				}
    
    			}				
    
    		}
    
    	});
    
    	}, 3000);
    
    	
    
    	selection =viewer.selection({
    
            onSelection: function(rect) {
    
                var elt = document.createElement("div");
    
    			elt.id = "runtime-overlay";
    
    			elt.className = "highlight";	
    
    			viewer.addOverlay({
    
    					element: elt,
    
    					location: viewer.viewport.imageToViewportRectangle(parseInt(rect.x), parseInt(rect.y), parseInt(rect.width), parseInt(rect.height))
    
    				});
    
    				
    
    			input = "rect_x="+rect.x+"&rect_y="+rect.y+"&rect_w="+rect.width+"&rect_h="+rect.height+"&plink=<?=$plink?>&case_id=<?=$case_id?>&mode=add";
    
    			$.ajax({
    
    				url : "handlers/H_AnnotationHandler.php",
    
    				data : input,
    
    				type : "post",
    
    				dataType : "json",
    
    				success : function(response) {
    
    					if (!response.error)
    
    						alert("success");
    
    					else 
    
    						alert("failed");
    
    				}
    
    			});
    
            }
    
        });

     

     

    Bu kod parçasında setTimeout yaptığım ajax call' ı normal çalıştırdığımda çalışmıyor. Çalışmıyordan kastım, viewer.viewport.imageToViewportRectangle değeri saçmasapan birşey geliyor. 4 saatimi yedi, timeout koyunca sorun düzeldi de. Net olarak nasıl çözebilirim ? Neden kaynaklanıyor acaba ?

    Not: async : false yapınca da düzelmemişti.

    ozgunlu tarafından 12/Oca/16 15:58 tarihinde düzenlenmiştir

    Hello, i am nothing. I come from Neverland.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek

    hocam bilemiyorum fayda getirir mi ama for 'u aşağıdaki yapıya getirebilir misin? (ek: setTimeout kullanmana gerek yok)

    for (var i = 0; i < 5; i++) {
       (function(i) {
         setTimeout(function () {
           console.log(i);
         }, i);
       })(i);
    }

    kaynak: https://docs.nodejitsu.com/articles/getting-started/control-flow/how-to-write-asynchronous-code

     

    RockZs tarafından 12/Oca/16 16:54 tarihinde düzenlenmiştir
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek
    RockZs bunu yazdı

    hocam bilemiyorum fayda getirir mi ama for 'u aşağıdaki yapıya getirebilir misin? (ek: setTimeout kullanmana gerek yok)

    for (var i = 0; i < 5; i++) {
       (function(i) {
         setTimeout(function () {
           console.log(i);
         }, i);
       })(i);
    }

    kaynak: https://docs.nodejitsu.com/articles/getting-started/control-flow/how-to-write-asynchronous-code

     

    Çalışmadı ne yazık ki hocam, teşekkür ederim yardımcı olmaya çalıştığın için.

    Tahminim benim kullandığım OpenSeaDragon geç yükleniyor, ben de "viewer"' ı kullandığımdan oluyor galiba.

    var viewer oluşturulmadan diğerini yapma nasıl diyebilirim, bir de öyle denesem ?

    undefined olduğu sürece bekletsem ?


    Hello, i am nothing. I come from Neverland.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pSkpt
    pSkpt's avatar
    Kayıt Tarihi: 10/Aralık/2010
    Erkek

    Öncelikle kodları daha anlaşılabilir bir yere koysan güzel olacak, sitenin editörü oldukça kötü.

    Yapmak istediğin şey nedir onu anlayamadım özet olarak anlatabilir misin?

    OpenSeaDragon vs. demişsin, o an yaratılmamış olabilir. Callback olayını araştır yani nesne yaratıldıktan sonra bir tetikleme olur o sırada da onunla alakalı işleri yaparsın.

    Varsa online çalıştığın örnek onu da atarsın canlı olarak deneyip bakalım.


    İmza...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    RockZs
    RockZs's avatar
    Kayıt Tarihi: 30/Haziran/2002
    Erkek

    undefined olduğu sürece bekletme fikri denenebilir, bilemiyorum ama ilginç geldi.

    callback yapısını öğrenmeye çalış derim, derdinin dermanı orada gibi.. JS kullanıyorsan ve I/O için bekleyen işler varsa callback yapısını öğrenmen gerekebilir.

     

    RockZs tarafından 12/Oca/16 17:39 tarihinde düzenlenmiştir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek

    Hocam ekranda Openseadragon ile cikarttigim goruntuye anotasyon yapildiginda o anotasyonu diger kullanicilarin da gorebilmeleri icin saklamam gerekiyor ve ekrana vermem. Saklama kisminda sorun yok; ekrana verirken gercek goruntu uzerindeki boyutunu ekran boyutuna convert etmesi gerekiyor bunu da onceden yuklemis oldugu viewer objesi uzerinden yapiyor. Ben 3 saniye bekletmezsem sacmasapan bir conversion yapiyor.


    Hello, i am nothing. I come from Neverland.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek
    <script type="text/javascript">
    debugger;
    /kodların
    </script>

    şeklinde debug edebilirsin.


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek
    ontedi bunu yazdı
    // 
    

    şeklinde debug edebilirsin.

    js de debug olduğunu bilmiyordum, süper oldu. yarın işte deneyeceğim. teşekkürler


    Hello, i am nothing. I come from Neverland.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Cosmic
    Cosmic's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    bir sürü plugin bişi kullanmışsın ne napıyor anlat önce bi bakalım :|


    Bittik biz bittik
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Gizem
    sLeymN
    sLeymN's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek
     async: false 
    abi ajaxına şu parametreyi ekleyip denedin mi hiç?

    Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek
    sLeymN bunu yazdı
     async: false 
    abi ajaxına şu parametreyi ekleyip denedin mi hiç?

    denedim hocam, yemedi :)

    yukarıda anlattım hocam @Cosmic


    Hello, i am nothing. I come from Neverland.
Toplam Hit: 1712 Toplam Mesaj: 12
javascript