• [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;
        })
    ;
  • 相关阅读:
    代码查错1
    代码查错
    垃圾回收器
    面试题(操作语句)
    面试题(JVM加载机制)
    面试题(线程)
    异常
    IO流
    es5 学习笔记
    ECMAScript5 Object的新属性方法
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4185959.html
Copyright © 2020-2023  润新知