AngularJS $q Promise サンプル03

var app = angular.module('app', []);
app.controller('Ctrl', function($q, $timeout) {
  function asyncHello(name) {
    var deferred = $q.defer();
    $timeout(function() {
      if(typeof(name) === 'string') {
        deferred.resolve('Hello, ' + name);
      }
      else {
        deferred.reject(name + 'は文字列ではありません。');
      }
    }, 1000);
    return deferred.promise;
  }
  var r = document.getElementById('result');
  var promise = asyncHello(326);
  promise.then(
    function(msg) {
      r.innerHTML = msg;
    },
    function(msg) {
      r.innerHTML = msg;
    }
  );
});