Присвоение JS значения обещания переменной - PullRequest
0 голосов
/ 19 апреля 2020

Как обещает начинающий в JS, это немного сбивает меня с толку, я пытаюсь получить base64 изображения, используя эту функцию:

const convertFileToBase64 = file => new Promise((resolve, reject) => {
 const reader = new FileReader();
 reader.readAsDataURL(file);
 reader.onload = () => resolve(reader.result);
 reader.onerror = reject;
})

, когда я вызываю эту функцию, я получаю Я обещаю, что могу использовать .then для печати значения, но не могу присвоить возвращаемое значение функции переменной.

1 Ответ

1 голос
/ 19 апреля 2020

При вызове функции, которая возвращает Promise, есть 2 способа получить из нее результат:

  1. с использованием .then
  2. с использованием async / await

.Подход на подход:

convertFileToBase64(myFile)
  .then(result => {
    // do something with the result within this little function
  })
  .catch(err => {
    // handle any error
  });

Асинхронный / ожидающий подход:

// must be inside an async function
async function doSomething() {
  const result = await convertFileToBase64(myFile);  // wait and assign result to variable
  // do something with the result
  // errors can get handled by whoever calls this async function
}
...