2013-10-27 12 views
5

Bu beni bir süre rahatsız eden Fonksiyonlar:Yazma/ben üzerinde hızlı bir QA tıpkı düşündüm bu yüzden

biri normal nodeJS modül veya bir şey vardır ve bir zaman uyumsuz fonksiyonu varsa sunucu tarafında. Bunu nasıl senkronize edebilirim. E.g nodejs fs.stat asenkron işlevini eşzamanlı olarak nasıl dönüştürürüm.

örn Ben

sunucu tarafında js

Meteor.methods({ 
    getStat:function() { 
     fs.stat('/tmp/hello', function (err, result) { 
      if (err) throw err; 
      console.log(result) 
     }); 
    } 
}); 

sonucun bir geri aramasında olduğu için geri undefined benim sonucunda elde istemciden diyoruz edin.

cevap

7

Meteor.wrapAsync adı verilen bir işlev (belgesiz) var.

Basitçe Artık Meteor.call arasında result bu sonucunu alacak kadar

Meteor.methods({ 
    getStat:function() { 
     var getStat = Meteor._wrapAsync(fs.stat); 

     return getStat('/tmp/hello'); 
    } 
}); 

fonksiyonunu sarın. İlk parametrenin bir hata olduğu ve ikinci sonucun olduğu geri arama olan herhangi bir zaman uyumsuzluğu işlevini dönüştürebilirsiniz.

+0

Hataları nasıl kontrol edebilirim? – zimt28

+0

@ zimt28 bir geri çağırma yoluyla iletmek yerine hataları atar, bunları kontrol etmek için 'try .. catch' kullanabilirsiniz – Akshat

İlgili konular