Я знаю, что это немного поздно, но я столкнулся с этой нитью, и ни одно из решений не было легко реализовать для меня, поэтому я придумал свой собственный:
Я добавил немного помощника функция, которая возвращает обещание, например:
function throw_promise_error (error) {
return new Promise(function (resolve, reject){
reject(error)
})
}
Тогда, если у меня есть определенное место в любой из моих цепочек обещаний, где я хочу выбросить ошибку (и отвергнуть обещание), я просто возвращаю из приведенной выше функции с моей сконструированной ошибкой, например:
}).then(function (input) {
if (input === null) {
let err = {code: 400, reason: 'input provided is null'}
return throw_promise_error(err)
} else {
return noterrorpromise...
}
}).then(...).catch(function (error) {
res.status(error.code).send(error.reason);
})
Таким образом, я контролирую выброс лишних ошибок из цепочки обещаний. Если вы хотите также обрабатывать «нормальные» обещания, вы можете расширить свой улов, чтобы обрабатывать «самозаброшенные» ошибки отдельно.
Надеюсь, что это поможет, это мой первый ответ на stackoverflow!
Скидка с цены хранилища:
html
Хранилище оба
, необходимо уравновесить затраты на обработку по сравнению с затратами на хранение.
Необходимо определенно сохранить исходную разметку Ткани/Скидки с цены и использовать любой стандартный материал кэширования HTTP (Измененный в последний раз, Истекает - В, Завершающий тег) кэшироваться представленный страницами или просто кэшировать результат обработки разметки.
Я в настоящее время использую Скидку с цены с PHP. Я храню источник скидки с цены в базе данных, и я отображаю Преобразованную Версию по запросу. У меня нет проблем производительности, и очень довольно этой установкой.
То, что я видел, должно действительно сохранить скомпилированный HTML в отдельной строке в базе данных. Просто имейте одну строку 'содержание' и другой 'content_html', и сохраните скомпилированный HTML в 'content_html' строке.
(Конечно, у Вас есть некоторый метод сохранения, который можно переопределить, чтобы сделать это?)