Giriş yapmadınız.

#1 15.12.2017 02:06:02

muhammet28
Üye
Kayıtlı: 23.08.2015
Mesajlar: 74

Javascript işlem sırası

selamlar arkadaşlar bu vuejs kodu fakat sorum javascript ile alakalı.
Şu kodumda raporlaMonthly() metodunda bir işlem yapılıyor bunu beklemeden kod alttaki console.log'u yazdırıyor yani konsola önce iki yazılıyor sonra bir yazılıyor. Neden for döngüsünün bitmesi beklenmiyor bu işlem önceliği için ne yapmam lazım teşekkürler..

raporData () {
          for (let i = 0; i < countClass; i++) {
            firebase.database().ref('yoklama/' + classKeys[i]).once('value').then(database => {
               this.raporlaMonthly(database.val())
                console.log("bir")
            })
          }
         console.log("iki")
        }

Çevrimdışı

#2 15.12.2017 08:54:07

evrend
Üye
Yer: DÜZCE
Kayıtlı: 26.05.2014
Mesajlar: 373
Website

Yanıt: Javascript işlem sırası

Javascripte Synchronous ve Asynchronous çalışma mantığını incelemelisiniz. Firebase'in buradaki fonksiyonu async çalıştığı için anlattığınız şekilde çalışması normal. Olayların Sync ilerlemesi gerekli ise javascript ile bunu engellemenin yöntemleri mevcut(promises, timeout vs.). Senkron ilerleyen programlama dillerinden(Örn:PHP) javascripte geçenler async çalışma mantığına alışmakta genelde zorluk çekerler. Bende çektim smile

https://www.google.com.tr/search?q=Java … ynchronous
https://firebase.google.com/docs/functi … -functions
https://stackoverflow.com/questions/163 … ng-in-node


Unutmayın, HERKOD aynı değildir.
Fiyat/Performans Cloud için: Digital Ocean.
Ayda 2,5$'a 512Mb ram, 1Core CPU Cloud için: Vultr.

Çevrimdışı

#3 15.12.2017 10:47:16

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,478
Website

Yanıt: Javascript işlem sırası

jquery'de async: false yapıldığı takdirde işlem sıraya konabilir:

$.ajax({
  url: "test.html",
  async: false
}).done(function(data) {
   // İşlem tamamlanınca şunu yap...
}).fail(function(xhr)  {
   // Hata oluşunca şunu yap...
});

Çevrimdışı

#4 15.12.2017 13:05:49

muhammet28
Üye
Kayıtlı: 23.08.2015
Mesajlar: 74

Yanıt: Javascript işlem sırası

teşekkürler şimdi firebase'i async değilde sync çalıştırmam gerekiyor sanırım ona bakayım. Daha önce genetator'ler vardı fakat es7 ile sync async gelmiş henüz tam öğrenmedim.

Çevrimdışı

#5 17.12.2017 21:16:37

alihankoc
Üye
Kayıtlı: 14.09.2017
Mesajlar: 53

Yanıt: Javascript işlem sırası

Ben de Evren'le beraber çalıştığım bir projede öğrenmiştim bunu, dediği gibi async ve sync çalışma mantığını incelemek en önemlisidir. Ama ikinci bir alternatif de callback fonksiyonlarıdır. raporlaMonthly()  fonskiyonunun callback'ine console.log("iki") 'yi yazman lazım. Böylece ilk fonksiyonun bitmesinin ve cevap vermesinin ardından tetiklenen bir fonksiyon olarak kullanmış olursun. raportlaMonthly() fonksiyonu sana bir değer döndürüyorsa bunu kullanma şansın da olur. Aksi takdirde async gidersen ilk fonksiyonun tamamlanma süresi ikinciyi geçiyorsa birincinin vereceği cevabı ikincide kullanamazsın çünkü ikinci de aynı anda başlamıştır çalışmaya ve ilki sonucu dönmeden çoktan bitmiştir işi.

Bkz: https://www.impressivewebs.com/callback … avascript/
Bkz: http://javascriptissexy.com/understand- … -use-them/

Çevrimdışı

#6 19.12.2017 01:18:21

muhammet28
Üye
Kayıtlı: 23.08.2015
Mesajlar: 74

Yanıt: Javascript işlem sırası

@alihankoc faydalı paylaşım için teşekkürler..

Çevrimdışı

Forum alt kısmı