这是正确的方法吗?
是。在返回的函数上使用备注是一种通用技术,可以避免重复执行异步(通常是昂贵的)任务。promise使缓存变得容易,因为不需要区分正在进行的操作和完成的操作,它们都表示为结果值的(相同)promise。
这是正确的解决方案吗?
否。全局
data变量及其解决方案
undefined并不是promise的工作原理。相反,用结果实现承诺
data!这也使编码容易得多:
var dataPromise = null;function getData() { if (dataPromise == null) dataPromise = $http.get("data.json").then(function (res) {return res.data; }); return dataPromise;}然后,代替
loadDataPromise().then(function(){data})它只是getData().then(function(data) { … })。为了进一步改善模式,您可能希望隐藏
dataPromise在闭包范围内,并注意在
getData接受参数(例如url)时需要查找不同的Promise。



