[Angular-Scaled Web] 9. Control your promises with $q

Learn how to manually control how asynchronous requests are handled with the use of promises. Because $http is built to work with promises, we saw a foreshadow of them in the previous lesson. We will take this a step further but seeing how to manually create a promise and then resolve or reject it as we see fit.

angular.module(‘eggly.models.categories‘, [

])
    .service(‘CategoriesModel‘, function ($http, $q) {
        var CategoriesModel = {},
            URLS = {
                FETCH: ‘data/categories.json‘
            },
            categories;

        function extract(result) {
            return result.data;
        }

        function cacheCategories(result) {
            categories = extract(result);
            return categories;
        }

        CategoriesModel.getCategories = function() {
            return (categories) ? $q.when(categories) : $http.get(URLS.FETCH).then(cacheCategories);
        };

        CategoriesModel.getCategoryByName = function(categoryName) {

            function findCategory(){
                return _.find(categories, function(c){
                    return c.name == categoryName;
                })
            }

            return $q(function(resolve, reject) {
                //resolve it when categories are set
                if(categories){
                    resolve(findCategory());
                }else{
                    //if not set, get the categories
                    CategoriesModel.getCategories()
                        .then(function() {
                            resolve(findCategory());
                        })
                }
            })
        };

        return CategoriesModel;
    })
;
时间: 2024-10-12 02:58:43

[Angular-Scaled Web] 9. Control your promises with $q的相关文章

angular和web前端的一些细节

HTML5中的本地存储localStorage:一直存储在本地sessionStorage:伴随着session,窗口关闭就没了用法:localStorage.setItem("key","value")//设置变量localStorage.getItem("key")//获取变量localStorage.removeItem("key")//清除变量 angularJS中scope和rootscope的区别scope:用于单

WebBrowser脚本错误的原因及Web Browser Control & Specifying the IE Version

最近想用 WebBrowser控件写个程序访问中国南方电网,以便查询各个网点停电计划停电信息,但发现报脚本错误,导致无法正常访问,而IE访问却无此问题.一开始抱着头疼医头,脚疼医脚的心态,想着怎么解决脚本错误的问题,无法解决之后想,IE无问题,那就是WebBrowser本身的问题了,想到之前也曾看过,说WebBrowser的工作模式并不是本机安装的IE正常模式,而是工作在保护模式,要想工作在本机IE模式,需要修改注册表.  报脚本错误,无论点击"是"或"否",都无法

支持Lower ASCII提供简易的编码控制字符方法的服务器控件Barcode Web Server Control

ASP.NET Barcode Web Server Control 是一款自定义服务器控件,被设计用于ASP.NET Web应用程序中.它可与Microsoft Visual Studio及其他的.NET开发环境兼容.所有类似的条码符号编码规格都是合并成单一的,小的,全功能的,可再发布的文件,不需要任何认证码或激活. 具体功能: 永久免收版权费用可用的开发许可具有该特点. 三种操作模式支持不同的实现方法. 100%托管代码可在Visual C# .NET 中使用强命名签名和签名的DLL来创建.

Docs-->.NET-->API reference-->System.?Web.?UI-->Control-->Methods-->Find?Control

https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.control.findcontrol?view=netframework-4.7 FindControl(String) Searches the current naming container for a server control with the specified id parameter. public virtual System.Web.UI.Control F

web api control注册及重写DefaultHttpControllerSelector、ApiControllerActionSelector、ApiControllerActionInvoker

namespace EWorkpal.WebApi { public class HttpNotFoundDefaultHttpControllerSelector : DefaultHttpControllerSelector { public HttpNotFoundDefaultHttpControllerSelector(HttpConfiguration configuration) : base(configuration) { } public override HttpContr

angular custom Element 自定义web component

angular 自定义web组件: 首先创建一个名为myCustom的组件. 引入app.module: ... import {customComponent} from ' ./myCustom.component'; @NgModule({ declarations:[AppComponent,customComponent], entryComponents:[customComponent] .... }) export class AppModule{} 全局注册: app.comp

深入理解jQuery、Angular、node中的Promise

最初遇到Promise是在jQuery中,在jQuery1.5版本中引入了Deferred Object,这个异步队列模块用于实现异步任务和回调函数的解耦.为ajax模块.队列模块.ready事件提供基础功能.在用jQuery操作DOM的时候对Promise的使用欲不够强烈,最近学习node和Angular,需要用js写业务逻辑和数据操作代码的时候这种场景需求就出来了.一般来说事件适合在交互场景中运用,因为用户的行为本来就是分散的,而promise这样的流程控制适合在后台逻辑中处理业务. //j

转:JavaScript Promises相当酷:一种有趣的方案库

许多的语言,为了将异步模式处理得更像平常的顺序,都包含一种有趣的方案库,它们被称之为promises,deferreds,或者futures.JavaScript的promises ,可以促进关注点分离,以代替紧密耦合的接口. 本文讲的是基于Promises/A 标准的JavaScript promises.[http://wiki.commonjs.org/wiki/Promises/A]Promise的用例: 执行规则 多个远程验证 超时处理 远程数据请求 动画 将事件逻辑从应用逻辑中解耦

五:理解控件的运行机制(例:基于Control命名空间的简单控件)

一:先用最简短的话说点理论的1.asp.net中所有的标准控件都可以重写 2.和控件相关的命名空间有 System.Web.UI.Control是所有控件的基类只提供简单的呈现逻辑,不支持样式表 System.Web.UI.WebControls.WebControl继承自Control支持控件外观 System.Web.UI.WebControls.CompositeControl继承自WebControl类派生出多个控件合成的复合控件 3.控件树的实现原理首先Page类本身就是一个控件,它继