Cuba jadikan fungsi async untuk hanya melakukan tindakan selepas memuat naik data
P粉514001887
P粉514001887 2024-04-02 23:18:57
0
1
560

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粉514001887
P粉514001887

membalas semua(1)
P粉986937457

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

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan