Lassen Sie uns sagen, dass ich den folgenden Code bin mit ein paar Versprechungen in Serie laufen:Verzögerungen zwischen Versprechungen in Versprechen Kette
let paramerterArr = ['a','b','c','d','e','f']
parameterArr.reduce(function(promise, item) {
return promise.then(function(result) {
return mySpecialFunction(item);
})
}, Promise.resolve())
Der Code ruft einfach mySpecialFunction (die ein Versprechen zurückgibt), wartet auf das Versprechen, aufgelöst werden und dann mySpecialFunction erneut aufrufen usw. Die Funktion wird also für jedes Element im Array einmal in der richtigen Reihenfolge aufgerufen.
Wie kann ich sicherstellen, dass zwischen jedem Anruf von mySpecialFunction(item)
eine Verzögerung von mindestens 50 Millisekunden besteht?
Es ist wichtig, dass die Versprechen in der richtigen Reihenfolge ausgeführt werden und die Ausführungszeit von mySpecialFunction
variiert jedes Mal.
Ich denke, ein synchroner Schlaf würde funktionieren, aber ich plane nicht, diesen Code in einem separaten Thread zu laufen, so würde es störende ui Einfrieren im Browser verursachen.
Ich bin mir nicht sicher, ob setTimer irgendwie dafür verwendet werden könnte. Ich meine, ich kann die Rückgabe eines Versprechens nicht verzögern.
Dies könnte helfen http://bluebirdjs.com/docs/api/promise.delay.html –
Ich habe das schon gesehen, aber ich verwende nicht Bluebird. Ich verwende native Promises. (ECMA6) – Forivin