Promise的第一个调用者应该获取数据,随后的调用者应该等待
First caller to Promise should fetch data, subsequent should wait
我在一个情况下,我的应用程序的多个部分希望访问数据。我希望第一个调用者发起从服务器获取,而随后的请求应该等待数据被获取。我怎么用Promise来做这个?
我试过这样做,但没有成功:
var promise = null;
var fetchComplete = false;
var data = null;
function getData() {
if (fetchComplete) {
return new Promise(function(resolve, reject) {
resolve(data);
});
} else {
if (promise === null) {
promise = new Promise(function(resolve, reject) {
getDataFromServer(function(response) {
fetchComplete = true;
data = response;
});
});
}
else {
return promise;
}
}
};
你可以这样使用闭包:
function getDataPromise() {
return new Promise(function(resolve, reject) {
getDataFromServer(resolve);
});
}
var getDataCached = (function() {
var fetchPromise = null;
return function() {
if (!fetchPromise) {
// Fetch data here and populate fetchPromise with an actual promise.
fetchPromise = getDataPromise();
}
return fetchPromise;
};
})();
第一次调用将填充fetchPromise闭包变量,而其余调用将简单地返回它。
相关文章:
- 你能调用一个在调用者上下文中返回的函数吗
- Web Worker postMessage({})何时返回给调用者
- 当javascript是单线程时,谁是onreadystatechange的调用者
- 函数调用者无效元素
- Javascript - make 函数在函数完成时告诉调用者
- 将数据传回jQuery插件的调用者元素
- Javascript在调用者“方法”之间更改变量
- 如何识别点击事件ember.js的调用者
- 用被调用者的尾部调用函数'的参数列表
- javascript可以在调用者之后定义被调用者,以及如何解析它
- 如何从严格模式获取调用者
- 是否可以在javascript中获取调用者上下文
- AngularJS动画带有回调,等待下一个动画开始
- 对JavaScript中调用者元素的引用
- 为什么在JavaScript中可以引用调用者中的参数
- 如何在调用回调之前等待异步创建的对象完全可用?
- 主干自定义事件:获取调用者对象
- Node.js回调,等待函数结束
- 当我需要调用者的执行暂停/等待时,如何使用promise.then() ?
- Promise的第一个调用者应该获取数据,随后的调用者应该等待