0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00

Removed usage of deferred

This commit is contained in:
Fabien "egg" O'Carroll 2024-02-01 14:24:26 +07:00
parent 3693ee70a2
commit 80c4e91669

View file

@ -6,25 +6,6 @@ const cacheManager = require('cache-manager');
const redisStoreFactory = require('./redis-store-factory'); const redisStoreFactory = require('./redis-store-factory');
const calculateSlot = require('cluster-key-slot'); const calculateSlot = require('cluster-key-slot');
function deferred() {
let value;
let err;
let resolve = _value => value = _value;
let reject = _err => err = _err;
const promise = new Promise((_resolve, _reject) => {
if (value) {
_resolve(value);
}
if (err) {
_reject(err);
}
resolve = _value => _resolve(_value);
reject = _err => _reject(_err);
});
return {resolve, reject, promise};
}
class AdapterCacheRedis extends BaseCacheAdapter { class AdapterCacheRedis extends BaseCacheAdapter {
/** /**
* *
@ -188,21 +169,13 @@ class AdapterCacheRedis extends BaseCacheAdapter {
async get(key, fetchData) { async get(key, fetchData) {
const internalKey = this._buildKey(key); const internalKey = this._buildKey(key);
if (this.currentlyExecutingReads.has(internalKey)) { if (this.currentlyExecutingReads.has(internalKey)) {
return this.currentlyExecutingReads.get(internalKey).promise; return this.currentlyExecutingReads.get(internalKey);
} }
const deferredResult = deferred(); const resultPromise = this.#get(key, fetchData).finally(() => {
this.currentlyExecutingReads.set(internalKey, deferredResult); this.currentlyExecutingReads.delete(internalKey);
this.#get(key, fetchData) });
.then((result) => { this.currentlyExecutingReads.set(internalKey, resultPromise);
deferredResult.resolve(result); return resultPromise;
this.currentlyExecutingReads.delete(key);
})
.catch((err) => {
deferredResult.reject(err);
this.currentlyExecutingReads.delete(key);
});
return deferredResult.promise;
} }
async #get(key, fetchData) { async #get(key, fetchData) {