Я выполнял операцию обработки изображений в JavaScript, которая работала, как и ожидалось, ожидая одного, иногда это зависало от пользовательского интерфейса, что заставляло меня использовать веб-работника для выполнения функций обработки изображений.У меня есть сценарий, где мне нужно обработать несколько.Ниже приведен краткий обзор рабочего процесса, который я использую для достижения вышеуказанного умения.
//closure
var filter = (function(){
function process(args){
var promise = new Promise(function (resolve, reject) {
if (typeof (Worker) !== "undefined") {
if (typeof (imgWorker) == "undefined") {
imgWorker = new Worker("/processWorker.js");
}
imgWorker.postMessage(args);
imgWorker.onmessage = function (event) {
resolve(event.data);
};
} else {
reject("Sorry, your browser does not support Web Workers...");
}
});
return promise;
}
return {
process: function(args){
return process(args);
}
}
})();
function manipulate(args, callback){
filter.process(args).then(function(res){
callback(res);
});
}
Здесь я загружаю несколько изображений и передаю их в манипулируем функцией.Проблема, с которой я сталкиваюсь здесь в этом сценарии, состоит в том, что иногда для немногих изображений Обещание никогда не решается.После отладки своего кода я понял, что это потому, что я создаю Обещание для изображения, в то время как предыдущее Обещание не было решено.Мне нужны предложения о том, как я могу исправить эту проблему, также у меня есть другой запрос, если я должен использовать одно и то же закрытие (фильтруйте здесь в вышеупомянутом сценарии) несколько раз или создавать новое закрытие каждый раз, когда требуется, как показано ниже:
var filter = function(){
....
return function(){}
....
}
function manipulate(args, callback){
var abc = filter();
abc.process(args).then(function(res){
callback(res);
});
}
Я надеюсь, что моя проблема ясна, если нет, пожалуйста, прокомментируйте.