Поместите результат обещания в переменную (для чайников)

Я использую отличную библиотеку exifr для чтения даты создания из png. Я перебираю массив и добавляю данные к созданному маркеру на карте... но я застрял на обещаниях!

Это то, что я хочу делать в каждой итерации цикла.

exifr.parse(bottlefullurl, {xmp: true, tiff:false})
    .then(output => bottledate = output.CreateDate);

jmarker.jmarkerdatedata = bottledate;

Что, конечно же, возвращает undefined, поскольку обещание не завершено. Я могу записать это в консоль, чтобы знать, что библиотека работает.

exifr.parse(bottlefullurl, {xmp: true, tiff:false})
    .then(output => console.info(output.CreateDate));

Документация отличная, но все примеры только console.info
https://github.com/MikeKovarik/exifr/blob/master/README.md

Я прочитал несколько отличных ответов о переполнении стека, таких как этот ...
Как вернуть ответ при асинхронном вызове?

... и некоторые статьи и документы MDN, но это примерно на три шага впереди моего текущего понимания Javascript (я не могу писать стрелочные функции).

Пожалуйста помоги!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Bottledate не находится в области действия, где вы его назначаете, он находится в области действия созданной вами функции стрелки.

попробуй это:

jmarker.jmarkerdatedata = exifr.parse(bottlefullurl, {xmp: true, tiff:false})
    .then(output => output.CreateDate);

Кажется, на шаг ближе, возвращено [object Promise] вместо [undefined]. У меня есть функция onClick для каждого из маркеров. Может быть, это будет проще сделать там, но я хотел бы сделать это в цикле.

Cmeet 23.11.2022 09:32
Ответ принят как подходящий

Оказался на один уровень тупее. Я пытался выполнить ожидание и получил сообщение об ошибке, потому что я добавлял свой файл .js, используя type='text/javascript', а не type=module... поэтому ожидание не сработает! Дох.

Так что это было очень просто после исправления:

jmarker.jmarkerdatedata = await exifr.parse(bottlefullurl, {xmp: true, tiff:false})
.then(output => output.CreateDate);

Другие вопросы по теме