Q:

Refresh/ TImer function for only 1 of 2 feeds -- $q.all() merge

This is a question based off my previous question here. 
Essentially, I've used the $q.all() method to resolve multiple http calls. Then I filter and merge the two data sources. 
This all works really well. But I want one of my two feeds to refresh every 5 minutes. Normally, I would do this by appending the following timer to the end of my code 
var timer = $scope.intervalFunction = function() {
    $timeout(function() {
       /* function to call $http.get again */
        $scope.intervalFunction(); 
    }, 300000)
}; 
timer(); 
$timeout.cancel(timer); 

My issue is, since I don't define the http calls as separate functions, and I also "merge" both sources, how do I call one of these sources only, and then update accordingly without making multiple list item copies (which is something that has happened to me in many attempts). 
Thank you! 
JSFiddle here 

A:

"I want one of my two feeds to refresh every 5 minutes". I'm not sure that you can do the trick with one of two $q.all requests. I just can advice you to make another request outside of your $q.all wrapper and start $timeout for it after your getting the result of first $q.all request.
Need to say, that I'm not absolutely sure in this solution because I didn't test it, but hope this will works:
$q.all(promises)
  .then(function(response) { 
    metadata = response.metadataPromise.data;
    metrics = response.metricsPromise.data; 
    joinMetadataAndMetrics();
    requestEveryFiveMinutes(); 
  })
  .catch (error) (function (error) { 
    console.log(error);
  });

function requestEveryFiveMinutes() {
  $interval(function() {
    // here you can make the needed http request
    yourRequest()
      .then(function() {
        // handle the response as needed
      })
      .catch(function(err) {
        console.log(err);
      })
  }, 300000);
}

And don't forget to inject $interval in your controller

