Take a microfiber cleaning cloth, cut it in fourths.
Put a few drops of liquid dish soap or non-conditioning shampoo in a sink, fill with warm water.
Soak the cloths, let them dry.
Carry them in your jersey pocket. That's just enough detergent residue to cut water surface tension without leaving suds, so they'll de-fog your glasses while cleaning them, and leave just enough soap that rain doesn't bead up, it just washes down in a thin film.
I have a stack of them that I do up every month or so during Seattle's rainy season.