Where asyncBananaRequest returns a promise -
function potentiallyAsync () {
if (cachedBanana) {
return asyncBananaRequest();
}
return
Sure! Use a pattern along these lines:
function bananas($q) {
var def = $q.defer();
if (cachedBananas) {
def.resolve(cachedBananas);
} else {
asyncBananas('Monkey.co')
.success(function(bananas) {
def.resolve(bananas);
});
}
return def.promise;
}
Meanwhile:
function monkey(bananas) {
bananas.then(function(bananas) {
bananas.eat(); // Yum!
});
}