Giter Club home page Giter Club logo

Comments (6)

Hexagon avatar Hexagon commented on May 30, 2024 1

Fixed in 5.5.1

from croner.

Hexagon avatar Hexagon commented on May 30, 2024

Hi!

Thanks for reporting!

Until very recently, if you passed an async function, croner just fire-and-forgetted it.

Version ~5.4 introduced a new feature to specify a custom error handler. To make this work i had to await the supplied function (to be able to catch any errors). By mistake await is also run when no custom error handler is passed - so it is a bug. Will have a look at that!

Meanwhile, you can use version 5.3.5 which do not have this behavior.

Verified by

v5.3.5 - OK

import Cron from "https://deno.land/x/[email protected]/src/croner.js";

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

Cron("* * * * * *", async () => {
    await sleep(2000);
    console.log("This run every second.");
});

v5.4.1 - Not OK

import Cron from "https://deno.land/x/[email protected]/src/croner.js";

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

Cron("* * * * * *", async () => {
    await sleep(2000);
    console.log("This should run every second, but do only run every 2 seconds.");
});

from croner.

Hexagon avatar Hexagon commented on May 30, 2024

Fixed in 5.4.2

from croner.

MZPL avatar MZPL commented on May 30, 2024

Looks like this issue will still appear when catch is defined, as it's still awaiting the promise.

import cron from "croner";

async function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

cron("*/5 * * * * *", async () => {
  console.log("Start", new Date().toISOString());
  await sleep(10_000);
  console.log("End", new Date().toISOString());
})

/*
Output (ok):
Start 2023-02-01T22:49:05.004Z
Start 2023-02-01T22:49:10.004Z
Start 2023-02-01T22:49:15.003Z
End 2023-02-01T22:49:15.044Z
Start 2023-02-01T22:49:20.004Z
End 2023-02-01T22:49:20.006Z
...


The same code, but `catch` is defined (not ok):
Start 2023-02-01T22:53:15.003Z
End 2023-02-01T22:53:25.030Z
Start 2023-02-01T22:53:30.004Z
End 2023-02-01T22:53:40.014Z
*/

Perhaps this could be fixed by using .catch(() => try..catch code here) without await instead?

from croner.

Hexagon avatar Hexagon commented on May 30, 2024

Oh, will have a look at this, if you're not up to it? :)

from croner.

Hexagon avatar Hexagon commented on May 30, 2024

I'll look into this now

from croner.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.