速记$ 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 :