Bisakah saya mengurangi fungsi-fungsi ini yang bekerja bersama hanya dalam satu? Jika saya bisa melakukannya, bagaimana?

Sunting: fungsi createMedia perlu mengunggah file media di wordpress, alih-alih createMediaAsync berfungsi untuk menunggu untuk menyelesaikan proses pengunggahan meskipun tidak penting untuk pertanyaan ini.

const createMedia = (postImgGalleryToUpload) => {
  return wp.media()
    // Specify a path to the file you want to upload, or a Buffer
    .file(postImgGalleryToUpload)
    .create({
      title: 'My awesome image',
      alt_text: 'an image of something awesome',
      caption: 'This is the caption text',
      description: 'More explanatory information'
    })
    .then(function (response) {
      return response.link;
    });
}

const createMediaAsync = async (postImgGalleryToUpload) => {
  try {
    var linkImage = await createMedia(postImgGalleryToUpload);
    console.log("IMMAGINE INSERITA" + linkImage);
  } catch (error) {
    console.log("Errore in createMediaAsync() - " + error);
  }
} 

Di file utama saya, saya mendapat panggilan ke file async:

createMediaAsync(postwp.postImgGallery1);

Terima kasih semua orang bisa memberi saya tip.

Untuk memperjelas pertanyaan saya ingin melakukan sesuatu seperti ini:

const createMedia = async (postImgGalleryToUpload) => {
    return await wp.media()
        // Specify a path to the file you want to upload, or a Buffer
        .file(postImgGalleryToUpload)
        .create({
            title: 'My awesome image',
            alt_text: 'an image of something awesome',
            caption: 'This is the caption text',
            description: 'More explanatory information'
        })
        .then(function (response) {
            return response.link;
        })
        .catch(function (error) {
            return error;
        });
}

Saya tahu itu salah sebenarnya tidak berfungsi sama sekali, apakah ada alternatif.

Terima kasih

-2
0daycode 12 Mei 2021, 19:22

1 menjawab

Jawaban Terbaik

Tentu, Anda benar-benar dapat menyejajarkan definisi fungsi untuk mengganti panggilan:

const createMediaAsync = async (postImgGalleryToUpload) => {
  try {
    var linkImage = await wp.media()
      .file(postImgGalleryToUpload)
      .create({
        title: 'My awesome image',
        alt_text: 'an image of something awesome',
        caption: 'This is the caption text',
        description: 'More explanatory information'
      })
      .then(function (response) {
        return response.link;
      });
    console.log("IMMAGINE INSERITA" + linkImage);
  } catch (error) {
    console.log("Errore in createMediaAsync() - " + error);
  }
} 

Namun, Anda tidak boleh mencampur sintaks async/await dengan sintaks .then(…)! Gunakan juga

function createMediaAsync(postImgGalleryToUpload) {
  return wp.media()
    // Specify a path to the file you want to upload, or a Buffer
    .file(postImgGalleryToUpload)
    .create({
      title: 'My awesome image',
      alt_text: 'an image of something awesome',
      caption: 'This is the caption text',
      description: 'More explanatory information'
    })
    .then(response => {
      const linkImage = response.link;
      console.log("IMMAGINE INSERITA" + linkImage)
    }, error => {
      console.log("Errore in createMediaAsync() - " + error);
    });
}

Atau

async function createMediaAsync(postImgGalleryToUpload) {
  try {
    const response = await wp.media()
      .file(postImgGalleryToUpload)
      .create({
        title: 'My awesome image',
        alt_text: 'an image of something awesome',
        caption: 'This is the caption text',
        description: 'More explanatory information'
      });
    const linkImage = response.link;
    console.log("IMMAGINE INSERITA" + linkImage);
  } catch (error) {
    console.log("Errore in createMediaAsync() - " + error);
  }
} 
-1
Bergi 12 Mei 2021, 16:54