powiedzmy Używam następujący kod do uruchomienia kilka obietnic w serii:Opóźnienia między obietnicami w łańcuchu obietnicy
let paramerterArr = ['a','b','c','d','e','f']
parameterArr.reduce(function(promise, item) {
return promise.then(function(result) {
return mySpecialFunction(item);
})
}, Promise.resolve())
Kod prostu wywołuje mySpecialFunction (zwraca obietnicę), czeka na obietnicy być rozwiązane, a następnie ponownie wywołuje funkcję mySpecialFunction itd. Tak więc funkcja jest wywoływana raz dla każdego elementu w tablicy, we właściwej kolejności.
Jak mogę się upewnić, że między każdą rozmową mySpecialFunction(item)
występuje opóźnienie co najmniej 50 milisekund?
Ważne jest, aby obietnice były wykonywane we właściwej kolejności, a czas realizacji mySpecialFunction
zmienia się za każdym razem.
Domyślam się, że synchroniczny sen będzie działał, ale nie planuję uruchomić tego kodu w osobnym wątku, więc spowoduje to irytujące ui w przeglądarce.
Nie jestem pewien, czy setTimer mógłby w jakiś sposób zostać do tego użyty. Chodzi mi o to, że nie mogę opóźnić powrotu obietnicy.
To może pomóc http://bluebirdjs.com/docs/api/promise.delay.html –
Już to widziałem, ale nie używam bluebirda. Używam rodzimych obietnic. (ECMA6) – Forivin