zoukankan      html  css  js  c++  java
  • [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;
        })
    ;
  • 相关阅读:
    nexus 安装与启动(windows本版)
    linux 安装 mysql8
    02、linux 常用指令
    linux 安装tomcat8
    CentOS7使用firewalld打开关闭防火墙与端口
    03、linux 安装jdk
    rabbit mq的使用
    跨域与同源策略
    JDK1.8新特性04--Optional处理空指针问题
    HttpAsyncClient异步调用
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4185959.html
Copyright © 2011-2022 走看看