Control order of callbacks for single input, multi-output cases?


I am looking to create a button with the following attributes:

When the button is clicked, it should:

  1. Disable its ability to be clicked again (and change back to ability to be clicked when the function (3) is done running)
  2. Change its name from “Compute Score” to “Running” (and change back to “Compute” after the function (3) is done running)
  3. Compute a data analysis function that takes a couple minutes

Importantly, the attributes need to be executed/initiated in the particular order outlined above to ensure each function is fully visible/functional to the user. Also, if possible, I am looking for a way without the need for continuous callback as well. I have been able to implement this type of button with dcc.Interval and Events, but want to stay away from this.

Is there any way to select a generic HTML component object by ID within a callback and access/change its properties there?