承诺解决后检索存储在服务中的数据 AngularJS/ES6

Retrieve data stashed in service after resolve of promise AngularJS/ES6

我有一项服务可以从后端获取数据,returns 作为承诺。一旦我兑现承诺,我就会在服务中维护数据,但我希望在数据可用时尽可能多地获取已保存的数据。

module.factory
var dataStash = {};

var service = {
        getListData : getListData,
        returnDataByListname: returnDataByListname
    };
    return service;

    function getListData(listName){
        //...get the data corresponding to this list
        ).then(setData);

        function setData (data, listName){
            //store the data from the resolved promise as an
            //object attribute with name same as the list name
            dataStash.listName = data;
        }

    }//end getListData

function returnDataByListname(listName){
       //how best to do this??
        return dataStash.listName;
    }

一切正常,但由于我没有在承诺解决后立即返回数据,而是将其保存在服务中,因此存在我多久可以调用 returnDataByListname 的问题。由于我不知道承诺何时会得到解决以及数据何时可用,我该如何设置 returnDataByListname 以便它 returns 数据在被调用后立即可用?

如果您主要是缓存数据,那么 returnDataByListname 可以 return 一个承诺:

function returnDataByListname(listName){
  return promiseStash[listName] || promiseStash[listName] = getListData(listName);
}

然后呼叫者可以重复呼叫returnDataByListname('foo').then(foo => console.log(foo));,但getListData('foo')只会被呼叫一次。