¿En qué punto de tiempo se basan los datos obtenidos al llamar a la API para la revisión?

El autor:Guigui17f, Creado: 2017-10-31 18:38:15, Actualizado: 2017-10-31 18:48:57

¿Puede explicar simplemente en qué punto de tiempo se basan los datos obtenidos por GetTicker y GetRecords en la revisión? Por ejemplo, encontramos un problema muy extraño, el siguiente código: La función principal (() { mientras (verdadero) { Var records = exchange.GetRecords (en inglés); Recordes.pop (en inglés); Log ((records.length)); el nombre del archivo es log.length. ¿Qué es lo que está pasando? ¿Por qué no? ¿Por qué no? La última salida de los registros siempre fue de 0:img

Sin embargo, si se elimina el comentario de pop ((() se llama: La función principal (()) { mientras (verdadero) { Var records = exchange.GetRecords (en inglés); Los archivos de los archivos de los archivos de los archivos de los archivos de los archivos. Log ((records.length)); el nombre del archivo es el mismo. ¿Qué es lo que está pasando? ¿Por qué no? ¿Por qué no? El resultado final es normal:img

Si no hay un ciclo de whilst, entonces no hay problema en reservar la llamada pop ((): La función principal (() { Var records = exchange.GetRecords (en inglés); Recordes.pop (en inglés); Log ((records.length)); el nombre del archivo es log.length. ¿Qué es lo que está pasando? ¿Por qué no?img

¿Puedes contestarme?


Más.

No hay nadaLa matriz que devuelve GetRecords es en realidad la misma variable que se mantiene en el nivel inferior, por lo que no se puede cambiar directamente.

Guigui17f¿Puede ser una característica del lenguaje js? Estoy bien copiando una vez con slice))) y no entiendo por qué...

Un sueño pequeño.Pruebe con esta función de copia profunda, que hace una copia profunda de cada registro que se obtiene, y luego puede modificar las variables después de la copia. ¿Por qué no lo haces? var cloneObj = function ((obj) { // Copiar profundamente las funciones de objetos var str, newobj = obj.constructor === Array? [] : {}; Si (tipo de objeto!== 'objeto') { ¿Qué es lo que está pasando? } otro si (JSON) { str = JSON.stringify ((obj); // Objetos serializados newobj = JSON.parse ((str); // redirigido ¿Por qué? para (var i en obj) { Newobj[i] = tipo de obj[i] === Objeto? cloneObj ((obj[i]) : obj[i]; también puede ser usado para hacer clones de objetos. ¿Por qué no? ¿Por qué no? ¿Qué es lo que está pasando? ¿Qué es esto? ¿Por qué no lo haces?

Un sueño pequeño.slice ((() Esta es una copia completa, no una referencia. Las operaciones de la referencia son en realidad la misma variable, la próxima vez que se modifique la obtención tendrá un impacto.

Guigui17fEsto es lo que ocurre. Se recomienda explicarlo en la documentación de la API para evitar errores.