En mi aplicación, tengo una funcionalidad en la que el usuario puede importar un archivo de hoja de cálculo. El archivo en sí se envía a la aplicación backend y, después de un tiempo, el resultado se puede obtener desde un punto final diferente según la ID. La cuestión es que el backend puede tardar mucho tiempo en preparar una respuesta y este tiempo varía según el tamaño del archivo. Hasta ahora he estado usando la función setTimeout , pero como el tiempo de respuesta del backend es diferente, no puedo hacerlo.
Aquí está mi código:
new_batch.vue
export default { name: 'BackboneSyncProducts', data() { return { styleCodes: [], fetchedProductSyncResult: [], loadId: null, } }, watch: { loadId(newValue, oldValue) { if (!oldValue && newValue) { setTimeout(() => { fetchSyncedProductsResultRequest(this, newValue).then(response => { this.fetchedProductSyncResult = response.data['result'] }) }, 3000) } } }, Toda la funcionalidad debe ser asíncrona. ¿Cómo acceder a la aplicación backend usando la función fetchSyncedProductsResultRequest hasta que response.data['result'] no sea nulo?
Intente enviar varias solicitudes mediante setInterval hasta que el archivo se procese en el backend y devuelva un valor no nulo. También puede usar websockets, pero eso requerirá actualizar la API de back-end.
export default { name: 'BackboneSyncProducts', data() { return { styleCodes: [], fetchedProductSyncResult: [], loadId: null, } }, watch: { loadId(newValue, oldValue) { if (!oldValue && newValue) { const intervalId = setInterval(() => { fetchSyncedProductsResultRequest(this, newValue).then(response => { if (response.data['request']) { clearInterval(intervalId); this.fetchedProductSyncResult = response.data['result'] } }) }, 1000) } } },