2016-07-31 2 views
0

Я использую последний ко-модуль (4.6).Параметры потери, переданные из совместно обернутой функции в другую

Это коа-промежуточное ПО. Поэтому уже завершена упаковка co().

create: function *() { 
    try { 
    this.body = yield services.createIt({obj: true}) 
    } catch (err) { 
    this.body = { "errors": err.details } 
    this.status = err.status 
    } 
} 

Он звонит другой генератор-функцию я вручную оберточной с co:

const co = require('co') 

createIt: co(function * (obj) { 
    console.log(obj) // --> undefined 
} 

Почему я "свободный" параметр?

+0

вероятно Вы имели в виду использовать 'co.wrap' вместо' 'co' на createIt', но это трудно отличить от многих ошибок синтаксиса в том, что отрывок – Bergi

ответ

1

Функция co немедленно выполняет заданную функцию генератора с помощью семантики async/await. Если вы используете его только из Koa-middleware, вам не нужно обертывать функцию createIt с помощью co, или вы можете просто использовать co.wrap, чтобы превратить генератор в функцию, которая возвращает обещание (с задержкой). Проверить https://github.com/tj/co/blob/master/index.js#L26

create: function *() { 
    try { 
    this.body = yield services.createIt({obj: true}) 
    } catch (err) { 
    this.body = { "errors": err.details } 
    this.status = err.status 
    } 
} 

services.js

const co = require('co') 

createIt: function * (obj) { 
    console.log(obj) 
} 

// OR 

createIt: co.wrap(function *(obj) { 
    console.log(obj); 
}); 
Смежные вопросы