使用 node.js 中的设置间隔在 long 运行 异步函数期间报告(后端服务)
Reporting during long running async function using set interval in node.js (backend service)
我需要在 node.js 中报告一个长 运行 操作的状态。下面的代码概述了基本用例。等待我知道的 longProcess 方法将与调用者同步,但我必须在我的代码中等待该方法。我应该在 longProcess 方法中处理这个吗?不确定如何解决这个问题。
function sleep (ms: number) {
new Promise(resolve => setTimeout(resolve, ms));
}
let processedCount = 0;
async function longProcess() {
// really long operation
while (true) {
processedCount++;
await sleep(1000); // simulate long process
if (processedCount === 10) // just to end the test somehow
break;
}
}
async function report() {
console.log(processedCount);
}
async function main() {
const id = setInterval(report, 500);
await longProcess();
clearInterval(id);
}
main().then(() => console.log("Done"));
sleep 方法仅用于演示目的,模拟长时间的 运行 操作。 'longProcess' 执行复杂且耗时的处理。它调用传入的回调以向调用方报告已处理的计数。 class 包含调用方法(和回调),还有一个我想定期调用的报告方法。我需要能够为此创建一个单元测试
你的睡眠函数没有返回你创建的承诺。您在函数返回的值上调用 await,在本例中它是未定义的,因此它实际上根本不等待。
function sleep (ms: number) {
return new Promise(resolve => setTimeout(resolve, ms));
}
我需要在 node.js 中报告一个长 运行 操作的状态。下面的代码概述了基本用例。等待我知道的 longProcess 方法将与调用者同步,但我必须在我的代码中等待该方法。我应该在 longProcess 方法中处理这个吗?不确定如何解决这个问题。
function sleep (ms: number) {
new Promise(resolve => setTimeout(resolve, ms));
}
let processedCount = 0;
async function longProcess() {
// really long operation
while (true) {
processedCount++;
await sleep(1000); // simulate long process
if (processedCount === 10) // just to end the test somehow
break;
}
}
async function report() {
console.log(processedCount);
}
async function main() {
const id = setInterval(report, 500);
await longProcess();
clearInterval(id);
}
main().then(() => console.log("Done"));
sleep 方法仅用于演示目的,模拟长时间的 运行 操作。 'longProcess' 执行复杂且耗时的处理。它调用传入的回调以向调用方报告已处理的计数。 class 包含调用方法(和回调),还有一个我想定期调用的报告方法。我需要能够为此创建一个单元测试
你的睡眠函数没有返回你创建的承诺。您在函数返回的值上调用 await,在本例中它是未定义的,因此它实际上根本不等待。
function sleep (ms: number) {
return new Promise(resolve => setTimeout(resolve, ms));
}