速记$ Q解析/不同的语法

问题描述:

,因为我是看着这tutorial video,我注意到FlightServices.js如下:

return { 
    getDeparture : function(user) 
    { 
    var dfd = $q.defer(); 

     // Mock departure information for the user's flight 

     dfd.resolve({ 
      userID : user.email, 
      flightID : "UA_343223", 
      date  : "01/14/2014 8:00 AM" 
     }); 

    return dfd.promise; 

    }, 
    getFlight : function(flightID) 
    { 
    return $q.resolve ({ 
     id : flightID, 
     pilot : "Captain Morgan", 
     plane : { 
      make : "Boeing 747 RC", 
      model : "TA-889" 
     }, 
     status: "onTime" 
    }); 
    } 
}; 

正如你所看到的,$q.defer()实例作为返回值上getDeparture(),不同从getFlight,直接返回$ q.resolve()。

后者是否有任何(dis-)优势?或者这只是一个速记符号? 我从来没有见过这个,并会想到,我需要在任何情况下defer()的实例。

第二种语法实际上与vanilla AngularJS无效。

笔者使用的一个概念叫做装饰这一功能添加到$ Q服务:

https://github.com/ThomasBurleson/angularjs-FlightDashboard/blob/master/lib/%24QDecorator.js

如果你不熟悉的装饰,有一个很好的视频,解释他们在egghead.io :

https://egghead.io/lessons/angularjs-provide-decorator