There is no way to merge the two events into one event. Even when you call set, the properties are still set one at a time, in order.
In other words:
set(handles.axes1,'XLim',newXLim,'YLim',newYLim);
is effectively equivalent to:
handles.axes1.XLim = newXLim;
handles.axes1.YLim = newYLim;
In both versions, the XLim property is set first, followed by the YLim property. The PostSet listener for the XLim property has no way to know that you are about to set the YLim property, so it cannot suppress the first event while waiting for the YLim to be set.
Best Answer