title: knockout writeable computed causes unnecessary 'read' calls
body: <p>Computed read/write problem: 'write' causes 'read' execution.</p>
  
  <p>I have read/write computed (or could also be pureComputed). It is writeable, because it could be computed from startDate and endDate. However, it could be also set directly, thus it is 'readable' and based on value startDate and endDate are set. Here is simplified version of my model:</p>
  
  <pre><code> self.startDate = ko.observable(...);
   self.endDate = ko.observable(...);
   self.selectedTimePeriod = ko.pureComputed({
              read: function () {                
                  console.log('time period read');
                  var startDate = self.startDate(),
                      endDate = self.endDate(),
                      timePeriod = Enums.TimePeriodTypeEnum.None;
                  timePeriod = Constants.MTD;                
                  return timePeriod;
              },
              write: function (timePeriodValue) {
                  console.log('time period write');
                  switch (timePeriodValue) {
                      case Constants.MTD:
                          self.startDate(...);
                          self.endDate(...);
                          break;
                  }
              }
      });
  
      self.timePeriodChange = function () {
          self.selectedTimePeriod(Constants.MTD);
      }
  </code></pre>
  
  <p>User click on UI triggers <code>self.timePeriodChange</code> function. As a result in console I see the following:</p>
  
  <pre><code>time period write
  time period read
  time period read
  </code></pre>
  
  <p>Thus, 'write' part is executed, however, when I change startDate and endDate - each time also 'read' part is executed. I see that this is because write updates read - but what if I do not wish this? How to deal with this situation?</p>
  
  <p>The suggestion was to use peek, but this causes other problems (observable is not updated). 
  Here is my fiddler: <a href="https://jsfiddle.net/o5kacas3/" rel="nofollow">https://jsfiddle.net/o5kacas3/</a> (changing dropdown, would not change computed on UI and actually its value, even when write part is executed).</p>