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;
        })
    ;
  • 相关阅读:
    第五章:数组 结构体 和联合体
    第四章:用户自定义和枚举数据类型
    第三章:systemverilog文本值和数据类型
    阶段一:读几本经济学书
    第二章:systemverilog声明的位置
    数据结构-B树
    UDP的崛起
    vim使用
    sudo apt-get update
    计算机组成原理——浮点数表示方法
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4185959.html
Copyright © 2011-2022 走看看