Я попробовал ваш код, но получил TypeError: reject is not a function
. Это потому, что вы передаете tryUntilThree(x+1)
, который выполняет функцию, прежде чем передать ее в nonPromiseCallback
.
Итак, я придумал этот код, чтобы попытаться выполнить то, что вы хотите.
let res; // used for keeping a reference to the original resolve
function nonPromiseCallback(x, resolve, reject){
if(x < 3){
reject(x + 1);
}
else{
resolve(x);
}
}
function tryUntilThree(x){
return new Promise((resolve) => {
if(!res){
res = resolve;
}
nonPromiseCallback(x, res, tryUntilThree);
});
}
tryUntilThree(1)
.then(res => console.log("RESULT:", res));
let res;
, эта переменная используется для хранения ссылки на исходное разрешение, так что .then
выполняется.
Я сохранил бы его прочь по двум причинам
1) Если Вы когда-нибудь изменяетесь, как Вы генерируете PDF, Вы, вероятно, не хотите, чтобы исторические объекты изменились. Если Вы генерируете их каждый раз, или они изменятся, или необходимо сохранить код совместимости для генерации записей "старого стиля"
2) Дисковое пространство является дешевым. Терпение пользователя не. Если у Вас действительно не требуют устройства хранения данных, или выход из устройства хранения данных более труден, чем генерация PDF, добр к Вашим пользователям и хранит его прочь.
Очевидно, при создании тысяч из них час до редкого набора данных у Вас не может быть устройства хранения данных. Но если бы у Вас есть пространство, я проголосовал бы за "использование за него"
Если бы это в архивных целях, я определенно сохранил бы PDF, потому что в будущем, Ваш сценарий поколения PDF может измениться, и затем буква не будет точно тем же как, что было первоначально отправлено. Клиент будет ожидать, что это будет точно тем же.
Не имеет значения, какой подход выше, иногда лучше пойти для того, какой подход более безопасен.
Существует ли причина судебной экспертизы, почему необходимо поддержать записи букв, отправленных клиентам? Если Вы собираетесь повторно создать на лету, как Вы знаете, что будущие изменения кода не перепишут букву (или, по крайней мере, клиент может привести, что аргумент в суде, если информация используется в судебном процессе)...
Немного вещей рассмотреть, PDF, генерируют на основе данных, поскольку это существовало в какой-то момент вовремя. НАПРИМЕР, счет на основе данных с предшествующего месяца?
Если так, Вы использовали бы тот же шаблон каждый месяц для генерации этой буквы? Что происходит, если/когда изменения формата буквы при регенерации на лету его, больше не являются тем же, которое было отправлено им. Действительно ли хранение является потоком PDF в базу данных возможность?
Я предполагаю то, что я достигаю, Вам нужно точное представление того, что было отправлено пользователю, или это гибко?
Если Вы используете ASP.NET, почему не кэшируют PDF. Ваш кэш может быть сохранен в базе данных, если Вам нравится или оставленный в памяти столько, сколько Вам, возможно, понадобится он сначала. Библиотека предприятия реализует это для Вас в блоке программы кэширования, и она замечательно проста в использовании. Если Вы кэшируете объект, создаете устройство хранения данных в базе данных с помощью блока и затем загружаете его при необходимости в нем, Вы не должны будете волноваться о воссоздании его.
Вопрос того, генерировать ли pdfs динамично или сохранить их статически, больше походит на вопрос закона, чем вопрос программирования.
Если у Вас нет доступа к юрисконсульту, который может дать представление об этом затем, будет намного более безопасным допустить ошибку на стороне осторожности и сохранить их статически.
Я склонен сказать, что "это зависит".
Когда один документ много раз требуют, это может быть сохранение, если Вы составляете его по первому запросу и получаете его подпоследовательно.
OTOH, если большинство запросов на документ имеет справедливый однажды тип и процесс создания, не съедает большую часть Вашей мощности сервера, на лету будет иметь преимущество.
Пока документ в формате PDF имеет постоянный характер (не только, документ работы, но и что-то официальное подписался и отправил где-то в другом месте в компании или за пределами компании), у Вас должны быть копия этого файла PDF в Вашей сети и ссылка на этот файл в Вашей базе данных.
Вы не можете полагаться на доступные данные для репродуцирования того же самого документа в другое время главным образом потому что: