2015-04-06 3 views
1

Генератор генераторов CoffeeScript теперь, но я нашел только то, что вы используете ключевое слово yield, тогда ваша функция будет скомпилирована генератору, вот мой вопрос, я использую koa для написания своего кода, а некоторые промежуточное ПО не нуждаются в асинхронной логике, поэтому Мне не нужен yield, поэтому, CoffeeScript считает, что это нормальная функция, но koa говорит: app.use() requires a generator function, T^T, у кого есть решение? Спасибо!Как заставить генератор использования на Coffeescript 1.9?

+0

Не использует Coffeescript решение? –

ответ

3

Используйте силу, Люк! ;)

Я перенес example from the homepage на CoffeeScript, а просто сделал последний обработчик также принять next аргумент и yield к нему, несмотря на это, будучи совершенно ненужным.

Включает его работает отлично. Однако выполнение yield null не работает.

koa = require("koa") 
app = koa() 

# x-response-time 

app.use (next) -> 
    start = new Date 
    yield next 
    ms = new Date - start 
    @set 'X-Response-Time', ms + 'ms' 

# logger 

app.use (next) -> 
    start = new Date 
    yield next 
    ms = new Date - start 
    console.log '%s %s - %s', this.method, this.url, ms 

# response 

app.use (next) -> 
    @body = "Hello World" 
    yield next 

app.listen(3000) 
+0

Я пробовал об этом, это сработало, но я думал, что это не нужно, и если кто-то прочитает этот код, он будет смущен, подумал, что после этого есть еще одно промежуточное ПО. Является ли официальное предложение решением? Я пытаюсь выяснить некоторые другие способы, но я потерпел неудачу. – PerterPon

+0

Нет, насколько я знаю, нет явного способа создания генератора в CoffeeScript, только «yield» сделает это. – Chris

+0

Однако, если вы определенно не хотите, чтобы какие-либо другие посредники запускались после этого, вы можете попробовать 'yield ->' (т. Е. Перейти к пустой функции). – Chris

0

Как описано в this coffeescript issue, вы можете использовать yield return, чтобы заставить функцию быть генератором. Я знаю, что это некрасиво, но на данный момент это единственный вариант.

+0

спасибо каждый много! – PerterPon

Смежные вопросы