简写$ q解析/不同语法

时间:2014-01-06 14:49:38

标签: angularjs promise

当我看到这个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()的实例。

1 个答案:

答案 0 :(得分:1)

第二种语法实际上不是带有vanilla AngularJS的有效语法。

作者使用一个名为decorators的概念将此功能添加到$ q服务:

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

如果您不熟悉装饰器,那么有一个很好的视频可以在egghead.io上解释它们:

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