Ich habe eine Node.JS-Anwendung, die einen Screenshot einer URL erstellt. Da mehrere Benutzer möglicherweise dieselbe URL zur gleichen Zeit anfordern, möchte ich sicherstellen, dass ich zu jedem beliebigen Zeitpunkt nur einmal einen Screenshot einer URL abrufe.Stellen Sie sicher, dass jede Aufgabe für einen bestimmten Parameter nur einmal in Node.JS
Ich habe es die folgende Art und Weise umgesetzt:
var inProgressUrls = {};
function grabScreenshot(url) {
var inProgress = inProgressUrls[url];
if (inProgress) {
return inProgress;
}
var promise = new Promise(function(fulfill, reject) {
... grab screenshot ...
// Once done, remove the Promise from the map.
delete inProgressUrls[url];
});
inProgressUrls[url] = promise;
return promise;
}
Was ich frage mich, ob ich ein paar Concurrency Probleme oder eine bessere Art und Weise bin fehlt, dies zu implementieren?