Last active
October 5, 2015 15:43
-
-
Save DevankAgarwal/0595d1850ab869ae086a to your computer and use it in GitHub Desktop.
promise chaining with $q
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function() { | |
'use strict'; | |
angular | |
.module('alienadv.core') | |
.factory('catalogService', catalogService); | |
/* @ngInject */ | |
function catalogService($q) { | |
var service = { | |
getCatalogs: getCatalogs, | |
catalogUrls: { | |
SportsDifficulties: getDifficultyType, | |
Seasons: getMonths, | |
Hours: getHours, | |
ActiityDays: getActivityDays, | |
TypeOfRequirements: getTypeOfActiviyRequirements, | |
Equipements: getAllEquipements, | |
TypeOfTripInclusions: getTripInclusionTypes, | |
Skills: getAllSkills, | |
Countries: getAllCountries, | |
Sports: getSports, | |
TypeOfDocuments: getAllDocumentsType, | |
TypeOfDiscounts: getAllDiscounts | |
} | |
}; | |
return service; | |
function resolver(key, func) { | |
var defer = $q.defer(), temp = {}; | |
func().then(function (res) { | |
temp[key] = res; | |
defer.resolve(temp); | |
}); | |
return defer.promise; | |
} | |
function getCatalogs(req) { | |
var allRequestChain = []; | |
_.forEach(req, function(cName) { | |
if (service.catalogUrls[cName]) { | |
allRequestChain.push(resolver(cName, service.catalogUrls[cName])); | |
} | |
}); | |
return $q.all(allRequestChain); | |
} | |
function getSports() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
0: 'Select a sport', | |
2: 'Scuba Diving', | |
3: 'Tekking', | |
4: 'Offbeat', | |
5: 'Paragliding', | |
6: 'Rafting' | |
}); | |
return defer.promise; | |
} | |
function getDifficultyType() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
0: 'Select activity dificulty', | |
1: 'Easy', | |
2: 'Medium', | |
3: 'Hard' | |
}); | |
return defer.promise; | |
} | |
function getMonths() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
1: 'January', | |
2: 'Feburary', | |
3: 'March', | |
4: 'April', | |
5: 'May', | |
6: 'June', | |
7: 'July', | |
8: 'August', | |
9: 'September', | |
10: 'October', | |
11: 'November', | |
12: 'December' | |
}); | |
return defer.promise; | |
} | |
function getHours() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
1: '1', | |
2: '2', | |
3: '3', | |
4: '4', | |
5: '5', | |
6: '6', | |
7: '7', | |
8: '8', | |
9: '9', | |
10: '10', | |
11: '11', | |
12: '12', | |
13: '13', | |
14: '14', | |
15: '15', | |
16: '16', | |
17: '17', | |
18: '18', | |
19: '19', | |
20: '20', | |
21: '21', | |
22: '22', | |
23: '23' | |
}); | |
return defer.promise; | |
} | |
function getActivityDays() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
1: '1', | |
2: '2', | |
3: '3', | |
4: '4', | |
5: '5', | |
6: '6', | |
7: '7', | |
8: '8', | |
9: '9', | |
10: '10', | |
11: '11', | |
12: '12', | |
13: '13', | |
14: '14', | |
15: '15', | |
16: '16', | |
17: '17', | |
18: '18', | |
19: '19', | |
20: '20' | |
}); | |
return defer.promise(); | |
} | |
function getTypeOfActiviyRequirements() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
0: 'Select', | |
1: 'Equiments', | |
2: 'Extra' | |
}); | |
return defer.promise; | |
} | |
function getAllEquipements() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
0: 'Select', | |
1: 'Wet Suits', | |
2: 'Masks', | |
3: 'BCD', | |
4: 'Fins' | |
}); | |
return defer.promise; | |
} | |
function getTripInclusionTypes() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
1: 'Accomodation', | |
2: 'Transport', | |
3: 'Safety', | |
4: 'Meals' | |
}); | |
return defer.promise; | |
} | |
function getAllSkills() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
0: 'Select', | |
1: 'Open Water Driver' | |
}); | |
return defer.promise; | |
} | |
function getAllCountries() { | |
var defer = $q.defer(); | |
defer.resolve([{ | |
name: 'Afghanistan', | |
code: 'AF' | |
}, { | |
name: 'Åland Islands', | |
code: 'AX' | |
}, { | |
name: 'Albania', | |
code: 'AL' | |
}, { | |
name: 'Algeria', | |
code: 'DZ' | |
}, { | |
name: 'American Samoa', | |
code: 'AS' | |
}, { | |
name: 'AndorrA', | |
code: 'AD' | |
}, { | |
name: 'Angola', | |
code: 'AO' | |
}, { | |
name: 'Anguilla', | |
code: 'AI' | |
}, { | |
name: 'Antarctica', | |
code: 'AQ' | |
}, { | |
name: 'Antigua and Barbuda', | |
code: 'AG' | |
}, { | |
name: 'Argentina', | |
code: 'AR' | |
}, { | |
name: 'Armenia', | |
code: 'AM' | |
}]); | |
return defer.promise; | |
} | |
function getAllCities() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
0: 'Select City', | |
1: 'Delhi', | |
2: 'Bangalore' | |
}); | |
return defer.promise; | |
} | |
function getAllRegions() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
0: 'Select Region', | |
1: 'Koramangla', | |
2: 'Indranagar' | |
}); | |
return defer.promise; | |
} | |
function getAllDocumentsType() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
0: 'Select', | |
1: 'Age Documnet', | |
2: 'Driving License' | |
}); | |
return defer.promise; | |
} | |
function getAllDiscounts() { | |
var defer = $q.defer(); | |
defer.resolve({ | |
1: 'Age', | |
2: 'Season', | |
3: 'Group Size' | |
}); | |
return defer.promise; | |
} | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment