我想在请求中等待响应,直到我在另一个请求中设置值。如何在koa中编码?
请求1:/ always-get?key = abc
请求2:/ set?key = abc& val = 1234
if($totalRows > 0 && ...
这在回调地狱框架中很容易......
答案 0 :(得分:1)
您可以创建一个事件总线来共享它们之间的事件。此外,co
将屈服于thunk并提供回调。因此,当你“听到”发出相同名称的事件时,你可以yield
一个thunk并调用回调。一旦调用了该回调,中间件链就会继续。
var Emitter = require('events');
var bus = new Emitter();
router.get('/info/:key', function* (next) {
var ctx = this;
// yield a thunk
yield function(cb) {
// this has the potential to leak event listeners!
bus.once(ctx.params.key, function(value) {
ctx.body = value;
cb();
});
};
});
router.get('/set/:key/:value', function* (next) {
bus.emit(this.params.key, this.params.value);
this.body = 'OK';
});