Xin hỏi dữ liệu được truy cập khi gọi API dựa trên thời điểm nào?

Tác giả:Guigui17f, Tạo: 2017-10-31 18:38:15, Cập nhật: 2017-10-31 18:48:57

Bạn có thể đơn giản giải thích dữ liệu được lấy từ GetTicker và GetRecords dựa trên thời điểm nào khi kiểm tra lại không? Ví dụ, bạn gặp một câu hỏi rất kỳ lạ, đoạn mã sau đây: function main (() { while (true) { var records = exchange.GetRecords (); records.pop ((); Log ((records.length); Sleep ((60000); Trong trường hợp này, bạn có thể sử dụng một trong những cách sau đây:img

Tuy nhiên, nếu bỏ pop ((() thì: function main (() { while (true) { var records = exchange.GetRecords (); /records.pop (); Log ((records.length); Sleep ((60000); ♪ ♪ Cuối cùng, đầu ra là bình thường:img

Nếu không có vòng lặp while, thì giữ pop ((() không có vấn đề: function main (() { var records = exchange.GetRecords (); records.pop ((); Log ((records.length); Sleep ((60000); img

Bạn có thể trả lời không?


Thêm nữa

KhôngGetRecords trả về một mảng mà thực sự là cùng một biến được bảo trì ở cấp thấp, vì vậy không thể thay đổi trực tiếp.

Guigui17fCó thể là do các tính năng của ngôn ngữ js? Tôi đã sao chép một lần với slice))) và không hiểu tại sao...

Giấc mơ nhỏBạn có thể thử sử dụng chức năng Deep Copy này, mỗi lần bạn lấy records, bạn sẽ có thể copy lại và thay đổi bất cứ biến nào bạn muốn. `` var cloneObj = function ((obj) { // Phân bản sâu các hàm đối tượng var str, newobj = obj.constructor === Array? [] : {}; if (typeof obj!== 'object') { return; } else if (JSON) { str = JSON.stringify ((obj); // đối tượng nối chuỗi newobj = JSON.parse ((str); // chuyển đổi } else { for (var i in obj) { newobj[i] = typeof obj[i] === 'object'? cloneObj ((obj[i]) : obj[i]; ♪ ♪ return newobj; }; ``

Giấc mơ nhỏslice ((() Đây là một bản sao hoàn toàn, không phải là một tham chiếu. Các hoạt động tham chiếu thực sự là cùng một biến, thay đổi lần tiếp theo sẽ có ảnh hưởng.

Guigui17fĐiều này đã xảy ra. Chúng tôi khuyên bạn nên giải thích trong tài liệu API để ngăn chặn sai sót.