folder Tahribat.com Forumları
linefolder Java
linefolder [JS] Düz Fonksiyonda Await Kullanımı



[JS] Düz Fonksiyonda Await Kullanımı

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lazz
    lazz's avatar
    Kayıt Tarihi: 15/Ekim/2007
    Erkek

    merhaba muritler

    kullanıdıgım bir NodeJs kutaphanesınde aşağıdakı gıbı bır kod var

        write(params, ...moreParams) {
            params = this.concatParams(params, moreParams);
            let chann = this.openChannel();
            this.holdConnection();
            chann.once('close', () => {
                chann = null; // putting garbage collector to work :]
                this.decreaseChannelsOpen();
                this.releaseConnectionHold();
            });
            return chann.write(params);
        }

    ben bu kodu şağıdakı gıbı bır durumda kullanıyorum.

     Bilgi.Arayuz.forEach((item) => {
                if (item['type'] == 'ether') {
                  client.write('/interface/ethernet/get','=number='+item['Adi'],'=value-name=speed').then(data1 => {
                    item.Speed=data1[0]['ret'];
                    console.log(data1[0]['ret']);
                  })
                  console.log('11.');
                }
              });

    buradakı sıkıntım  foreachla satırları kontrol edıp eger if kosuluma uyan varsada write kodunu calıstıyoruyum ve cıkan sonucu aynı satırada speed degerıne yazmaya calısıyorum ama 

    kodlar wire fonksoıyonu beklemedıgı ıcın bos deger gelıyor

    google aradım Promise olayını gordum fakat mevcut yapımda calıstıramadım

    bunu calıstırmabılmek ıcın nasıl bır yol ızlıyebılırım.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
       const myFunction =async (elements) => {
         for (let i = 0; i < elements.length; i++) {
           const item=elements[i];
           if (item.type == 'ether') {
             const result = await client.write('/interface/ethernet/get', `=number=${item.Adi}`, '=value-name=speed');
             item.Speed = result[0].ret;
             console.log(result[0].ret);
           }
         }
       }
       myFunction(Bilgi.Arayuz);

    Edit : Write fonksiyonnuu asenkrona çekmen lazım. Promise olmamalı.

     

    MhmdAlmz tarafından 31/Mar/20 16:09 tarihinde düzenlenmiştir

    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lazz
    lazz's avatar
    Kayıt Tarihi: 15/Ekim/2007
    Erkek
    MhmdAlmz bunu yazdı
       

    hocam bunu denedım asagıdakı gıbı bır hata verıyor

    await is only valid in async function

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    lazz bunu yazdı
    MhmdAlmz bunu yazdı
       

    hocam bunu denedım asagıdakı gıbı bır hata verıyor

    await is only valid in async function

    hocam write fonksiyonunu da async çekmen lazım. Aynı mantıkta. Buradaki channel de promise değilse işin yaş taa en başa gitmen lazım.

    Bu fonksiyonlar ya promise yada async olmalı yoksa olmaz hocam.


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    acemi-webci
    acemi-webci's avatar
    Kayıt Tarihi: 11/Haziran/2008
    Erkek

    Hocam client.write zaten promise dönüyor(kütüphaneyi bilmiyorum ama metodu çağırıp sununda then ile resolve göndermenden belli.)

    bir async metod yapıp içersindeki promise'leri await ile kullanabailirsin.

    https://javascript.info/async-await#await


    ...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yunusemre
    yunusemre's avatar
    Kayıt Tarihi: 22/Ağustos/2016
    Erkek

    foreach asenkron bir fonksiyon değildir hocam,

    bu tarz projelerde asyncForEach kullanmanı öneririm

     

    async function asyncForEach(array, callback) {
    for (let index = 0; index < array.length; index++) {
    await callback(array[index], index, array);
    }
    }

    örn:

    asyncForEach(Bilgi.Arayuz, (item) => {

    ....

    })


    "Programcılar saatler boyunca çalışmak zorunda kalmalarına engel olacak sistemler tasarlamaya saatler boyunca uğraşırlar." David Allen
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lazz
    lazz's avatar
    Kayıt Tarihi: 15/Ekim/2007
    Erkek
    yunusemre bunu yazdı

    foreach asenkron bir fonksiyon değildir hocam,

    bu tarz projelerde asyncForEach kullanmanı öneririm

     

    async function asyncForEach(array, callback) {
    for (let index = 0; index < array.length; index++) {
    await callback(array[index], index, array);
    }
    }

    örn:

    asyncForEach(Bilgi.Arayuz, (item) => {

    ....

    })

    hocam bunu yarın bir denicem

    digerlerini denedim

    ama çalısmıyolar kutuphane hazır bır kutuphane ordakı kodlara bakınca connect diye bir parametre var onda promise var ama bunda kullanmamıs :(

Toplam Hit: 1899 Toplam Mesaj: 7
nodejs js