2014-10-30 6 views
5

Koa ben this aracılığıyla ilk jeneratör işlevinde Koa Bağlam erişmesi edebilirsiniz.Başka bir jeneratör işlevinde koa bağlamına nasıl erişilir?</p> <pre><code>app.use(function *(){ this; // is the Context } </code></pre> <p>Ama başka bir jeneratör işlevi verim eğer ben artık <code>this</code> yoluyla bağlamı erişemez:

app.use(function *(){ 
    yield myGenerator(); 
} 

function* myGenerator() { 
    this.request; // is undefined 
} 

Ben sadece ikinci jeneratör işlevine bağlamı geçmek mümkün oldum ama bağlamına erişmeye daha temiz bir yolu var mı merak ediyorum.

Herhangi bir fikrin var mı?

cevap

12

Ya dediğin gibi bir argüman olarak this geçmesi:

app.use(function *(){ 
    yield myGenerator(this); 
}); 

function *myGenerator(context) { 
    context.request; 
} 

veya apply() kullanın: Büyü gibi

app.use(function *(){ 
    yield myGenerator.apply(this); 
}); 

function *myGenerator() { 
    this.request; 
} 
+0

Çalışır. Şerefe Vinicius! – Felix

+0

Jeneratör fonksiyonumun başka argümanları varsa ne geçmek isterim? – teradyl

İlgili konular