Potentially async function return a promise that immediately resolves?

前端 未结 2 846
灰色年华
灰色年华 2020-12-18 12:54

Where asyncBananaRequest returns a promise -

function potentiallyAsync () {
  if (cachedBanana) {
    return asyncBananaRequest();
  }
  return         


        
2条回答
  •  爱一瞬间的悲伤
    2020-12-18 13:49

    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!
       });
    }
    

提交回复
热议问题