Data yang diambil pada waktu panggilan API berdasarkan titik waktu apa?

Penulis:Guigui17f, Dibuat: 2017-10-31 18:38:15, Diperbarui: 2017-10-31 18:48:57

Apakah Anda bisa menjelaskan secara sederhana pada titik waktu mana data yang diperoleh oleh GetTicker dan GetRecords pada saat retesting? Jika Anda menemukan masalah yang sangat aneh, contohnya, kode berikut: fungsi main (() { sementara (benar) { var records = exchange.GetRecords (); record.pop (); Log (rekords.length); Sleep ((60000); Aku tidak tahu. Aku tidak tahu. Dalam hal ini, Anda dapat menggunakan data yang tersimpan di dalam file.img

Tapi jika Anda tidak mengomentari pop ((() maka akan muncul: fungsi main (() { sementara (benar) { var records = exchange.GetRecords (); /records.pop (); Log (rekords.length); Sleep ((60000); Aku tidak tahu. Aku tidak tahu. Pada akhirnya, outputnya normal:img

Jika tidak ada loop sementara, maka tidak masalah untuk menyimpan panggilan pop ((): fungsi main (() { var records = exchange.GetRecords (); record.pop (); Log (rekords.length); Sleep ((60000); Aku tidak tahu.img

Apakah Anda bisa menjawabnya?


Lebih banyak

Tidak adaArray yang dikembalikan oleh GetRecords sebenarnya adalah variabel yang sama dengan yang dipelihara di tingkat bawah, jadi tidak dapat diubah secara langsung.

Guigui17fMungkin karena sifat bahasa js? Saya tidak masalah dengan slice))) hanya menyalin sekali dan tidak tahu mengapa...

Mimpi kecilCobalah dengan fungsi Deep Copy ini, setiap kali records yang diambil akan di-deep copy, dan kemudian Anda dapat mengubah variabel yang telah disalin sesuka hati Anda. `` var cloneObj = function ((obj) { // Fungsi objek yang disalin dalam var str, newobj = obj.constructor === Array? [] : {}; if (typeof obj!== 'object') { kembali; } lain jika (JSON) { str = JSON.stringify ((obj); // objek seri newobj = JSON.parse ((str); // redirect } lainnya { for (var i in obj) { newobj[i] = typeof obj[i] === 'object'? cloneObj ((obj[i]) : obj[i]; Aku tidak tahu. Aku tidak tahu. return newobj; }; ``

Mimpi kecilSlice (() ini adalah salinan lengkap, bukan referensi. Operasi yang dirujuk sebenarnya adalah variabel yang sama, modifikasi akan berdampak pada pengambilan berikutnya.

Guigui17fTernyata demikian. Disarankan untuk menjelaskan dalam dokumentasi API untuk mencegah manipulasi yang salah.