samples-ts/functions/continueAsNewCounter.ts (16 lines of code) (raw):
import * as df from "durable-functions";
import { OrchestrationContext, OrchestrationHandler } from "durable-functions";
import { DateTime } from "luxon";
const continueAsNewCounter: OrchestrationHandler = function* (context: OrchestrationContext) {
let currentValue: number = context.df.getInput() || 0;
context.log(`Value is ${currentValue}`);
currentValue++;
const wait: DateTime = DateTime.fromJSDate(context.df.currentUtcDateTime).plus({ seconds: 30 });
context.log("Counting up at" + wait.toString());
yield context.df.createTimer(wait.toJSDate());
if (currentValue < 10) {
context.df.continueAsNew(currentValue);
}
return currentValue;
};
df.app.orchestration("continueAsNewCounter", continueAsNewCounter);