fetchでアップロード

formData を作りfileオブジェクトを append する。それを body に突っ込んで fetch request を送る。

async function uploadFile() {
    let formData = new FormData();
    formData.append("file", fileupload.files[0]);
    await fetch('/upload.php', {
      method: "POST",
      body: formData
    });
    alert('The file has been uploaded successfully.');
}

ref. Simple Ajax file upload with pure JavaScript example

fetchでJSONレスポンスを受け取る

async/await を使うとこう。

async function getWeather() {
    const res = await fetch(URL);
    const data = await res.json();
    return data;
    // ↓無理やり一行で書くとこうなる
    // return await (await fetch(URL)).json();
}

ref. fetch,async/awaitでAjax通信 - Qiita

then でチェインする書き方はこう。

fetch('http://example.com/movies.json')
  .then(response => response.json())
  .then(data => console.log(data));

ref. Fetch の使用 - Web API | MDN