Sila tanyakan pada titik masa mana data yang diambil semasa panggilan API diulang berdasarkan?

Penulis:Guigui17f, Dicipta: 2017-10-31 18:38:15, Dikemas kini: 2017-10-31 18:48:57

Bolehkah anda jelaskan secara ringkas pada titik masa mana data yang diperoleh oleh GetTicker ()) dan GetRecords ()) berdasarkan pada masa yang dihitung semula? Sebagai contoh, apabila anda menghadapi masalah yang sangat pelik, kod berikut: fungsi utama (() { while (true) { var records = exchange.GetRecords (); record.pop (); Log ((records.length); Sleep ((60000); {C:$0000FF} {C:$0000FF} Rekod output terakhir mempunyai panjang 0:img

Tetapi jika anda mengutip keluar pop ((() panggilan: fungsi utama (() { while (true) { var records = exchange.GetRecords (); /records.pop (); Log ((records.length); Sleep ((60000); {C:$0000FF} {C:$0000FF} Hasilnya adalah normal:img

Jika tidak ada gelung sementara, maka panggilan pop ((() tidak akan menjadi masalah: fungsi utama (() { var records = exchange.GetRecords (); record.pop (); Log ((records.length); Sleep ((60000); {C:$0000FF}img

Adakah anda boleh menjawab?


Lebih lanjut

SifarArray yang dikembalikan oleh GetRecords sebenarnya adalah variabel yang sama dengan yang dipelihara di peringkat bawah, jadi tidak boleh diubah secara langsung.

Guigui17fMungkin disebabkan oleh ciri-ciri bahasa js? Saya tidak mengapa untuk menyalin sekali dengan slice))) dan tidak faham mengapa...

Mimpi kecilCuba gunakan fungsi Deep Copy ini, untuk menyalin setiap rekod yang diambil, dan kemudian anda boleh mengubahnya dengan senang hati. `` var cloneObj = function ((obj) { // Menyalin dalam fungsi objek var str, newobj = obj.constructor === Array? [] : {}; if (typeof obj!== 'object') { Kembali; } else if (JSON) { str = JSON.stringify ((obj); // objek siri newobj = JSON.parse ((str); // redirect } else { for (var i in obj) { newobj[i] = typeof obj[i] === 'object'? cloneObj ((obj[i]) : obj[i]; {C:$0000FF} {C:$0000FF} return newobj; }; ``

Mimpi kecilslice ((() Ini adalah tiruan penuh, bukan rujukan. Operasi rujukan sebenarnya adalah satu variabel yang sama, perubahan pada pengambilan seterusnya akan memberi kesan.

Guigui17fIni adalah benar. Kami mencadangkan untuk menerangkannya dalam dokumentasi API untuk mengelakkan kesalahan.