松散从共同包装函数传递给另一个函数的参数
Loosing parameters passed from co-wrapped function to another one
我使用的是最新的辅助模块 (4.6)。
这是一个 Koa 中间件。因此它已经 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
}
为什么我要"loose"这个参数?
函数co
立即执行具有async/await语义的给定生成器函数。如果你只是从 Koa 中间件使用它,你不需要用 co
包装 createIt
函数,或者你可以只使用 co.wrap
将生成器变成一个函数returns 一个承诺(延迟承诺)。检查 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);
});
我使用的是最新的辅助模块 (4.6)。
这是一个 Koa 中间件。因此它已经 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
}
为什么我要"loose"这个参数?
函数co
立即执行具有async/await语义的给定生成器函数。如果你只是从 Koa 中间件使用它,你不需要用 co
包装 createIt
函数,或者你可以只使用 co.wrap
将生成器变成一个函数returns 一个承诺(延迟承诺)。检查 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);
});