title: Knockout computed vs. subscription, timing issues
body: <p>Just found out, that in KnockoutJS subscription functions are evaluated before dependent computables and need someone who can commit that, because I can't find anything about Knockouts timing in the docs or discussion forums.</p>
  
  <p>That means: If I have a model like this...</p>
  
  <pre><code>var itemModel = function (i) {
      var self = this;
  
      self.Id = ko.observable(i.Id);
      self.Title = ko.observable(i.Title);
      self.State = ko.observable(i.State);
  
  };
  
  var appModel = function () {
     var self = this;
  
     self.Items = ko.observableArray() // &lt;-- some code initializes an Array of itemModels here
     self.indexOfSelectedItem = ko.observable();
  
     self.selectedItem = ko.computed(function () {
         if (self.indexOfSelectedItem() === undefined) {
              return null;
         }
         return self.Items()[self.indexOfSelectedItem()];
     });
  };
  </code></pre>
  
  <p>where I want to keep track of the selected array item with an observable index field, and I subscribe to this index field like this...</p>
  
  <pre><code>appModel.indexOfSelectedItem.subscribe(function () {
      // Do something with appModel.selectedItem()
      alert(ko.toJSON(appModel.selectedItem()));
  }
  </code></pre>
  
  <p>...the subscription function is evaluated before the computed is reevaluated with the new index value, so I will get the selectedItem() that corresponds to the last selected Index and not the actual selected Index. </p>
  
  <p>Two questions:</p>
  
  <ul>
  <li>Is that right?</li>
  <li>Then why should I make use of ko.computed() if a simple function gets me the current selected Item every time I call it, while ko.computed gets evaluated at anytime where everything is done already and I dont need it anymore?</li>
  </ul>