Let's say I am using the following code to run a couple of promises in series:
let paramerterArr = ['a','b','c','d','e','f']
parameterArr.reduce(function(promise, item) {
return promise.then(function(result) {
return mySpecialFunction(item);
})
}, Promise.resolve())
The code simply calls mySpecialFunction (which returns a promise), waits for the promise to be resolved and then calls mySpecialFunction again etc. So the function is called once for every element in the array, in the correct order.
How could I make sure that there is a delay of at least 50 milliseconds between every call of mySpecialFunction(item)
?
It is important that the promises are executed in the right order and the execution time of mySpecialFunction
varies every time.
I guess a synchronous sleep would work, but I'm not planning to run this code in a separate thread, so it would cause annoying ui freezes in the browser.
I'm not sure if setTimer could somehow be used for this. I mean I can't delay the returning of a promise.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…