Я закрываю этот вопрос, потому что я выделил свою основную проблему - производительность при использовании браузера Edge - в библиотеку, которую я использую для преобразования SVG в PDF, а не для своего использования. обещаний, setTimeout или async / await, но мы будем благодарны за дальнейшее понимание дополнительных выводов, представленных ниже!
@ Предложения Берги очень ценятся, но я, вероятно, все еще что-то упускаю. Если я не включаю строки после await new Promise(...)
внутри then()
, мои циклы завершаются, прежде чем я сгенерирую содержимое моих страниц PDF, что вызывает следующие шаги - экспорт полного содержимого PDF в виде строка и сохранение на диск - не удалось. Мне нужно, чтобы этот цикл завершился синхронно, поэтому я получаю все содержимое PDF в правильном порядке. Единственная причина, по которой я использую new Promise(resolve => setTimeout(resolve, 0))
, заключается в том, чтобы немного улучшить отзывчивость браузера во время цикла, который работает почти так же, как показано в исходном посте.
Я удалил async
из обратного вызова then
и переключился на синхронную версию функции exportSvg
, и она работает хорошо. Просто ожидание вызова на exporter.exportSvgAsync
, не заключая его в await new Promise(resolve => setTimeout(resolve, 0)).then(...)
, не позволяло браузеру реагировать вообще внутри цикла.