Html2canvas работает последовательно при использовании Orders.all.Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Html2canvas работает последовательно при использовании Orders.all.

Сообщение Anonymous »

У меня есть следующий код, когда я проверяю журнал времени выполнения, журнал и время запроса, которые вызовы html2canvas, я вижу, что код работает последовательно вместо «параллельно». Мой DOM довольно маленький, но он занимает 5 с на Localhost и 10S на производстве.
Когда я заменяю ждать html2canvas () с wait myapi.call (), он вызывает 3 API одновременно. Когда я использую wait html2canvas, он позвонит в мой файл test.css, предположим, что мой массив обещаний имеет 3 элемента, каждый раз, когда обрабатывается html2canvas 5S, на вкладке сеть я вижу время для получения test.css друг от друга, а не друг от друга, а не друг от друга, а не друг от друга. звонит почти в то же время. Я не думаю, что проблема в моем коде, пожалуйста, помогите мне знать, где проблема, я где -то ошибается? < /P>

Код: Выделить всё

async convertDivSigToBase64(id) {
try {
var el = document.getElementById(id)
if (!el) {
return ''
}
const options = {
useCORS: true,
scale: 3,
letterRendering: true,
};
let output = await html2canvas(el, options)
const dataUrl = output.toDataURL()
return dataUrl.substring(13 + 'image/png'.length);
} catch (e) {
console.error('Lỗi capture chữ ký', e)
return null;
}
},
async getAllCaptureSig() {
// other logic
console.time("Thời gian chạy getAllCaptureSig");
const promises = [];
console.time('time add promise to array')
promises.push(checkAllElectricSameSize ? this.convertDivSigToBase64(elecId) : null)
promises.push(checkAllDigitalSameSize ? this.convertDivSigToBase64(digitalId) : null)
promises.push(checkAllFlashSameSize ? this.convertDivSigToBase64(flashId) : null)
// console.log(promises)
console.timeEnd('time add promise to array')
const results = await Promise.all(promises);
// console.log('Kết quả của tất cả các hàm convertDivSigToBase64:', results);
if (results[0] != '') {
this.captureElectricSignature = results[0]
}
if (results[1] != '') {
this.captureDigitalSignature = results[1]
}
if (results[2] != '') {
this.captureFlashSignature = results[2]
}
console.timeEnd("Thời gian chạy getAllCaptureSig");
}
Как я могу исправить и оптимизировать производительность

Подробнее здесь: https://stackoverflow.com/questions/794 ... romise-all
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»