2017-04-03 21 views
0

我有一个声明,它通过良率给出了它的结果,但在某些情况下,它以某种方式无法正常工作,我的收益率无限地等待着,唯一的解决方案就是重新启动应用程序。我想知道是否有什么办法可以设置超时而KoaJs越来越结果通过产量如何超时KoaJs/NodeJs中的yield语句?

var x = yield someFunction(par1) 
return (x) 

我的问题是,在一些罕见的情况下,someFunction不返回任何值,和我被困在地狱永恒的等待

+0

没有为一个模块:) https://github.com/wejendorp/koa-timeout这一次增加了全局超时。如果你只想为某些地方使用这种逻辑,请检查它的实现:它在引擎盖下使用'co'和'Promise.race'。 –

+0

@YuryTarabanko没有lib不起作用。我猜这个库设置http连接的超时时间,并且不会产生语句 –

+0

肯定会起作用。如果你需要在koa中间件之外使用这种逻辑,可以使用同样的方法:第二场比赛承诺在一段时间之后拒绝的那个人,以及你用'co'包装发电机得到的那个。 –

回答

1

写超时承诺制造商:

yield new Promise(resolve => { 
    someFunction(par).then(resolve); 
    setTimeout(resolve, 5000); 
});