要完成这项工作,您必须在另一个线程中运行长时间操作。您可以使用setTimeout函数来执行此操作,也可以为此使用任何精美的第三方库。这是快速解决方案:
var cheeseViewModel = function() {
    var self = this;
    self.englishOnly = ko.observable(false);
    self.filtering = ko.observable(false);
    self.cheeses = ko.observableArray([]);
    self.cheeses.push(new cheese('Camembert', false));
    self.cheeses.push(new cheese('Stilton', true));
    self.cheeses.push(new cheese('Brie', false));
    self.cheeses.push(new cheese('Appenzeller', false));
    self.cheeses.push(new cheese('Wensleydale', true));
    self.selectedCheeses = ko.observableArray(self.cheeses());
    self.englishOnly.subscribe(function() {
        self.filtering(true);
        setTimeout(function() {
            var filteredCheeses = ko.utils.arrayFilter(self.cheeses(), function(cheese) {
                createSlowness();
                return cheese.madeInEngland || !self.englishOnly();
            });
            self.selectedCheeses(filteredCheeses);
            self.filtering(false);
        }, 20);
    });
这是工作小提琴:http: //jsfiddle.net/pSzSw/6/