The Canaanites had plenty of time to repent. The biblical pattern-indeed, God's promise-is that when nations repent, God withholds judgement (see Jeremiah 18:7-8). The principle is clearly illustrated for us in the case of Nineveh (Jonah 3).
The Canaanites were not acting blindly. They had heard of the God of the Israelites and knew what was expected of them, but they defied Him and continued in their sinful ways. They were ripe for judgement. God, as the absolutely sovereign Ruler over affairs of life and death, maintains the right to take life when circumstances call for it.
Ron Rhodes, 5-Minute Apologetics for Today, p. 44