当我看到这个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()
的实例。
答案 0 :(得分:1)
第二种语法实际上不是带有vanilla AngularJS的有效语法。
作者使用一个名为decorators的概念将此功能添加到$ q服务:
https://github.com/ThomasBurleson/angularjs-FlightDashboard/blob/master/lib/%24QDecorator.js
如果您不熟悉装饰器,那么有一个很好的视频可以在egghead.io上解释它们: