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;
        })
    ;
  • 相关阅读:
    18.11.5 考试总结
    18.11.2 考试总结
    18.11.1 考试总结
    洛谷 P1084 疫情控制 noip2013D2T3
    18.10.31 考试总结
    洛谷P1312 Mayan游戏 noip2011D1T3
    18.10.30 考试总结
    【考前复习_各类模板之补充】
    NOIP2016之反面教材提供
    【最后的抒情】【离NOIP还有9个小时】
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4185959.html
Copyright © 2011-2022 走看看