with node how for example deal callbacks async javascript asynchronous callback promise

javascript - node - Cómo agregar un retraso para prometer dentro de



node callbacks (2)

Devuelve una promesa del manejador que espera:

.then(() => new Promise(resolve => setTimeout(resolve, 1000)))

Si quiere "pasar" el valor de la promesa, entonces

.then(x => new Promise(resolve => setTimeout(() => resolve(x), 1000)))

Para evitar esta repetición, escriba una función de utilidad:

function sleeper(ms) { return function(x) { return new Promise(resolve => setTimeout(() => resolve(x), ms)); }; }

entonces utilízalo como en

.then(sleeper(1000)).then(...)

Esta pregunta ya tiene una respuesta aquí:

fetch() { return axios.get(''/rest/foo'') //.then(response => {throw new Error(response)}) // Uncomment to test network error //.then( <<add delay here>> ) // Uncomment to simulate network delay }

¿Cómo agrego demora en el último bloque, por lo que esperará una cantidad de tiempo especificada antes de pasar el control a los buscadores de llamadas que luego bloquean?


Esta es una de las situaciones raras en las que creas una nueva promesa:

fetch() { return axios.get(''/rest/foo'') .then(value => new Promise(resolve => { setTimeout(() => { resolve(value); }, delayInMilliseconds); }) ); }

Si es posible que ese value sea ​​una promesa, inserte .then(value => Promise.resolve(value)) en la cadena:

fetch() { return axios.get(''/rest/foo'') .then(value => Promise.resolve(value)) // *** .then(value => new Promise(resolve => { setTimeout(() => { resolve(value); }, delayInMilliseconds); }) ); }