Saya memiliki untuk loop di mana saya melingkari berbagai objek. Pada setiap iterasi saya menambahkan elemen HTML ke dalam string. Saya kemudian menulis string ke halaman sebagai HTML ketika loop selesai. ...

2
user44109 5 April 2021, 21:58

1 menjawab

Jawaban Terbaik

Pertimbangkan untuk membuat variabel lokal di dalam setiap iterasi bahwa .then dapat referensi:

for (const item of myObject.elements) {
    const li = $('<li />').appendTo('body');
    getInfoFromDatabase(item.dbID)
        .then((result) => {
            li.data("databaseDetails", result);
        })
        // .catch(handleErrors);
}

Catatan

  • Kode Anda saat ini (dan kode di atas) ditambahkan ke <body>. Anda mungkin ingin menambahkan ke <ul> atau <ol> sebagai gantinya.
  • Anda tidak perlu JSON.parse muatan dan kemudian JSON.stringify itu saat mengatur ke data - proses-proses itu membatalkan satu sama lain.
  • String berlalu sebagai argumen pertama untuk .data tidak perlu diawali dengan data- (itu bukan atribut data, itu disimpan di jquery internal). Mungkin juga merupakan ide yang baik untuk membuat camelcase properti yang disimpan untuk keterbacaan.
  • Jangan abaikan kesalahan - tambahkan .catch jika memungkinkan.
  • Anda mungkin ingin mengisi <li> s sekaligah, bukan satu-satu karena setiap respons kembali. Jika Anda menginginkan itu, gunakan Promise.all Sebagai gantinya, untuk menunggu semua respons selesai, sebelum pergi untuk menyisipkan <li> s.
0
CertainPerformance 5 April 2021, 19:04