【问题标题】:Using java script promises for calling function once使用 javascript 承诺调用函数一次
【发布时间】:2016-10-19 12:30:33
【问题描述】:
  var dataPromise= $q.defer();

  function getDataPromise(){
    return dataPromise.promise;
  }

  (function getData(){
    setTimeOut(
       function(){
          myPromise.resolve("data");
       }
      ,1000);
  })();

   getDataPromise().then(function(){alert("use old data");});

在这段代码中,“dataPromise”定义在“getData”函数范围之外,因此不会在每次“getData”调用时创建新的promise。

“getData”会调用一次,“dataPromise”会保存第一次调用的数据,不会被更新。

我想了解这是否是承诺反模式?如果是这样 - 一次调用异步函数的正确方法是什么?

【问题讨论】:

    标签: javascript angularjs promise ecmascript-6


    【解决方案1】:

    我会这样写:

    const dataPromise = $q(function(resolve) {
        setTimeOut(function() {
            resolve("data");
        }, 1000);
    });
    
    function getDataPromise() {
        return dataPromise;
    }
    
    getDataPromise().then(function(){alert("use old data");});
    

    【讨论】:

      猜你喜欢
      • 2017-08-12
      • 2017-03-31
      • 2015-08-13
      • 2015-05-05
      • 2017-05-16
      • 2019-11-16
      • 2022-01-08
      • 2018-07-06
      • 1970-01-01
      相关资源
      最近更新 更多