Ciąg instrukcji .then w pętli

0

Nie zajmuję się na co dzień pisaniem programów. Proszę więc o wyrozumiałość jeśli zgłaszam się z banalnie prostym problemem.
Poniżej znajduje się przykładowy ciąg 4 instrukcji .then. Załóżmy, że sekwencję tych dwóch środkowych potrzebuję wykonać 100 razy. Inaczej mówiąc w jaki sposób umieścić je w pętli. Znalazłem przykłady dla pojedynczej instrukcji zwykle dla setTimeout(). Wykombinowanie jednak jak to zrobić dla sekwencji trochę mnie przerasta. Czy ktoś może pomóc ?

.then(function (){return hc.write(1);}

.then(function (){return hc.write(2);})
.then(function (){return hc.write(3);})

.then(function (){return hc.write(4);})

Potrzebne mi jest to do aplikacji wykorzystującej Web Bluetooth.

2

Jak ma być sekwencyjnie to coś w stylu:

const fn = async () => {
  await hc.write(1);
  for (let i = 0; i < 100; i++) {
    await hc.write(2);
    await hc.write(3);
  }
  await hc.write(4);
};

Jak ma być zrównoleglone to Promise.all()

Ogólnie to chyba za bardzo okroiłeś/aś przykład by podać konkretną odpowiedź.

0

Bardzo dziękuję za odpowiedź.
Bazowałem na tego typu przykładach https://web.dev/bluetooth/ Nie ma tam niczego z pętlą.
Muszę wysłać do urządzenia około 60kB danych używając kombinacji instrukcji writeValueWithoutResponse i WriteCharacteristicValue.
Rozumiem że jeśli zamiast .then użyję await to tego typu kodzie https://googlechrome.github.io/samples/web-bluetooth/write-descriptor-async-await.html będę mógł tworzyć pętle.

0

Tak, async upraszcza kod - można działać prawie jak z synchronicznym kodem. Oczywiście da się bez tego obejść, ale nawet nie chce mi się zastanawiać jak to zrobić bez tego.

1

Bardzo mi pomogłeś z tym async. Cały kod rzeczywiście znacząco się uprościł i stał się bardziej czytelny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1