In this case, the order of the extenders matters because the throttle expander returns a new ko.dependentObservable , so if you have required , then it will apply to the wrong observable.
Change the order and it should work:
ko.observable('label2').extend({throttle: 500, required: true }),
But since the execution of the expander in the order of declaration of the property is not really defined, you are safer if you use two extensions in this case:
ko.observable('label2').extend({throttle: 500}).extend({required: true })
Demo script.
source share