2014-09-26 15 views
5

Meteor wrapAsync'u nasıl kullanırım? AşağıdaMeteor wrapAsync sözdizimi

ben synchronosly bu iki Meteor.call fonksiyonları çalıştırmak istiyorum ama sadece bir nesne döndürmesi shuold console.log(getGroup); üzerinde undefined olsun

if (tempTreatment.groupId === undefined) { 
     // create new group 
     Meteor.wrapAsync(Meteor.call('createTreatmentGroup', salon, tempTreatment.groupName, tempTreatment.groupName)); 

     // get group id 
     var getGroup = Meteor.wrapAsync(Meteor.call('getTreatmentGroup', salon, tempTreatment.groupName)); 

     console.log(getGroup); 
     tempTreatment.groupId = getGroup._id; 
} 

yapmaya çalışıyorum budur.

cevap

7

Meteor.wrapAsync, bir Sonlandırıcı olarak bir geri çağırma gerektiren Node.js eşzamansız işlevlerini sarmak üzere tasarlanmış bir sunucu tarafı API'sidir, bir Fibers alt kitaplığı olan Future s kullanılarak eşzamanlı görünmelerini sağlar. (Burada Bu konuda daha fazla: https://www.discovermeteor.com/blog/wrapping-npm-packages/)

O tasarlanmamıştır çünkü tarayıcı üzerinde bir senkron çağrı içine asenkron Meteor.call açmak için istemci tarafında kullanılmak üzere, Uzak yöntemi invokation çağrıları DAİMA asenkron bulunmaktadır.

Uzun lafın kısası, yapmaya çalıştığınız şeyi yapamazsınız, geri aramaları kullanmanız ve ikinci yöntem çağrınızı birinci yöntem çağrınızın başarılı geri çağrısı içine yerleştirmeniz gerekir.

+1

0.9.3'te, "Her Yerde" kullanılabilen [Meteor.wrapAsync] (http://docs.meteor.com/#meteor_wrapasync) var. Bu hata mı? –

+3

Bunu fark etmemiştim. "Meteor.wrapAsync" in bir istemci sürümü oluşturduklarını düşünüyorum, böylece kodun kullanılması hata tetiklemeden paylaşılan klasöre yerleştirilebilirdi, ancak bu gerçekten sunucu kullanımı için tasarlandı. Geri arama yapılmadığı takdirde, wrapAsync'in istemci tarafındaki sürümü, sadece kullanılacak standart bir "logErr" geri çağrısını tanımlar; bu, eğer varsa, hatayı basitçe kaydeder: https://github.com/meteor/meteor/blob/ 9608e6205019b69a302cde62e21fcae1c7d22e3d/paketler/göktaşı/helpers.js # L108 – saimeunt