cari

Rumah  >  Soal Jawab  >  teks badan

Cuba jadikan fungsi async untuk hanya melakukan tindakan selepas memuat naik data

Diedit untuk menambah soalan di bahagian bawah: Pada masa ini, ia berjalan dengan baik, cuma ia tidak berjalan secara tidak segerak (saya fikir itulah sebabnya async menunggu sedang mencuba).

Soalan saya ialah bagaimana untuk menjadikan proses penyerahan tidak segerak supaya saya hanya boleh melakukan tindakan selepas memuat naik maklumat (dalam kes ini menggesa pengguna untuk memilih langkah seterusnya).

const handleSubmit = async () => {
  
  try {
    if (image.value) {
      await uploadImage(image.value); <--I thought this was 
        asynchronous, but I tested and I don't think it is. 
    }

    const colRef = collection(db, "collection");

    //I thought the below was asynchronous, but it's not
    await addDoc(colRef, 
       {
      data: data.value <--placeholder
     
    });
    
      });
  } catch {

  }

  //code to run after addDoc is done, but it runs immediately
  $q.dialog({
      [content]
    })
};

Kemas kini: Saya telah menukar fungsi addDoc dengan fungsi .then dan ini nampaknya berfungsi. Masalah semasa ialah saya tidak dapat melengkapkan fungsi uploadImage sebelum menjalankan fungsi addDoc.

Ini adalah percubaan saya untuk melakukan fungsi muat naikImej, yang saya tahu adalah ceroboh dan salah:

if (image.value) {
          return new Promise((resolve, reject) => {
            const newImage = uploadImage(image.value);
            resolve(newImage);
          });
        } else {
          console.log("error");
        }

P粉514001887P粉514001887235 hari yang lalu493

membalas semua(1)saya akan balas

  • P粉986937457

    P粉9869374572024-04-03 18:44:04

    Hanya jika fungsi uploadImage()addDoc() anda mengembalikan janji JavaScript.

    Lihat artikel inidari nodejs.dev untuk mendapatkan maklumat lanjut tentang async/menunggu.

    balas
    0
  • Batalbalas