【发布时间】:2017-08-12 07:47:28
【问题描述】:
我有一个快速应用程序,其中我有一个需要 aprox 的生成器函数。 5分钟处理大量数据。不幸的是,我无法优化该功能。
自动表达times out after 2 minutes,我确实不想只为这个特定的功能改变它。我想如果我定期拨打res.write() 电话,2 分钟规则可能不适用。
我的问题:
如何在等待其他函数终止时每 X 秒执行一次 res.write('Something') ?
我希望它执行以下操作,希望您能理解。
function main() {
co(function* () {
const something = yield promise(); // function that needs a lot of time
const doWhileWaiting = setTimeout(() => {
if (!something) {
// Print this while waiting for the value of something
console.log('Waiting for something ... ');
} else {
console.log(something);
clearInterval(doWhileWaiting);
}
}, 5000);
});
}
【问题讨论】:
-
您想让用户等待整整五分钟吗?您可以发送“谢谢,您的数据将在五分钟内准备好”之类的回复。并通过 webhook、web socket、推送通知等提供通知,或者只是给他们一个链接,让他们可以检查何时准备好。
-
这是一个应用程序,最终服务器会每天执行一次脚本调用这个函数。问题是由于产量的原因,“某事”之后的所有内容在完成之前都不会被执行。有没有办法在后台执行它并在完成时收到通知?
-
我认为你需要子进程...
-
“服务器每天执行一次脚本”到底是什么意思?您的意思是另一台服务器向您的端点发出 HTTP 请求吗?否则我看不出 express 与此有什么关系。
标签: javascript node.js express promise co