The suspect fled on foot but was quickly nabbed several blocks away on Rogers Avenue and Union Street.
After he resisted arrest and refused to be handcuffed, officers used a Taser to subdue him before taking him into custody.
Karroll was taken to a local hospital for treatment and is expected to make a full recovery, police said.
He is fewer than two weeks from retirement, according to sources.
“Today that vest saved his life,” NYPD Commissioner Jessica Tisch said at a press conference Sunday morning.
A second officer suffered bruises to her face and shoulder during the incident.