Проблема с передачей данных от одной функции asyn c к другой - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь загрузить изображение в json и передать его json другой асинхронной функции. Но я сбит с толку и не могу понять, как значение можно передать функции create(json). Буду признателен за любую помощь.

async function send() {
    let form = new FormData(document.querySelector('form'));
    let json = await construct_json(form, data => {
    return data;
  });
    await create(json); //The problem is I cannot pass json to this function
}

function getBase64(file, callback) {
  let reader = new FileReader();
  reader.onload = function(e) {
    callback(e.target.result);
  };
  reader.onloadend = function(e) {
    return e.target.result;
  };
  return reader.readAsDataURL(file);
}

async function construct_json(form, callback) {
  let data = await getBase64(form.get("picture"), data => {
    let json = {
      picture: data
    };
    callback(json);
  });
}

1 Ответ

1 голос
/ 04 августа 2020

Используйте либо обратные вызовы, либо обещания ... попытка использовать оба варианта - запах кода

async function send() {
    let form = new FormData(document.querySelector('form'));
    let json = await construct_json(form);
    await create(json); //The problem is I cannot pass json to this function
}

function getBase64(file) {
    return new Promise(resolve => {
        let reader = new FileReader();
        reader.onloadend = function (e) {
            resolve(e.target.result);
        };
        reader.readAsDataURL(file);
    });
}

async function construct_json(form) {
    let picture = await getBase64(form.get("picture"));
    return {picture};
}
...