Saya melihat kode ini di suatu tempat, hanya ingin tahu, mengapa perlu menentukan Promise dalam tipe pengembalian? bukankah fungsi mengembalikan data yang merupakan objek? dan apa | null for?

const getSomething = async (
  id: string
): Promise<UserData | null> => {
  try {
    const { data } = await axios.get(
      `${API}/user?id=${id}`
    );
    return data;
  } catch (err) {
    if (err.response) {
      return err.response.data;
    }
    return null;
  }
};
1
akibo 5 Mei 2020, 08:27

1 menjawab

Jawaban Terbaik

Fungsi async selalu mengembalikan Janji - dengan begitu, await asinkron dapat menunggu di dalam fungsi, dan hasilnya dapat digunakan di luar fungsi.

Di sini, getSomething mencoba mengambil data dari panggilan aksios. Jika panggilan berhasil, data baru saja dikembalikan:

return data;

Namun jika panggilan tidak berhasil, panggilan tersebut akan mengembalikan salah satu dari berikut ini:

if (err.response) {
  return err.response.data;
}
return null;

Jika panggilan axios melempar, dan tidak ada properti err.response, maka null akan dikembalikan. Jika Anda mengabaikan | null, fungsi getSomething tidak akan diketik dengan benar.

1
CertainPerformance 5 Mei 2020, 05:30