It really depends on the solution you're working on. In this particular case, it would odd if the button had just appeared, and on some pages there's a button for each row on a large table of data.
Disabling it first then enabling is a better approach, but the solution I went for, still registers the user's action, and if they did it less than a a second from the DOM completing, it gives the impression that everything it as it should be...if that makes sense!