【发布时间】:2016-06-16 21:29:48
【问题描述】:
我的程序下载了大量数据,对其进行处理,并通过返回的函数使其可用。该程序获得了下载,所以我添加了让它等待数据到达的承诺。
function dataSource(...) {
var _data = null;
// download: a promise that returns data for the _data object.
let download = function() { ... }
return function(...) {
if (!_data) {
download(...).then(data => _data = data).done();
}
var datum = _data[key];
var outbound = doSomethingWithData(datum);
return outbound;
}
}
我的代码结构是这样的,因为Engine 返回的函数让我的代码非常整洁。
var generate = dataSource(param1,param2);
var fullName = generate("malename")+" "+generate("malename")+" "+generate("surname");
具体要求是:
- 只下载一次数据。
- 按键查询数据任意次数,无需再次下载数据。
- 不要更改现有接口。
我可以让dataSource 返回一个承诺而不是一个函数。我知道使用 Promise 的模式是什么样的。但这将迫使我重写使用此函数的代码。这种模式在整个代码中被广泛使用,更改它不是一个可接受的解决方案。
我如何构造它以确保我的函数在获得数据之前不会返回,而不返回承诺?
【问题讨论】:
-
根本不是那个问题的副本。不同的要求。
标签: javascript promise