foreach verzögern, bis xmlhttprequest die Arbeit abgeschlossen hat

Kai

Ich habe versucht, eine Antwort in StackOverflow zu finden und sogar an anderer Stelle im Internet gesucht, aber ich hatte kein Glück. Ich versuche es jetzt seit ein paar Tagen ohne Erfolg.

Ich muss meine nur verzögern, forEachbis die XMLHttpRequestfür jede Datei abgeschlossen ist, basierend auf meinem Code unten. Danke im Voraus..

function handleFiles(files,i) {
   files = [...files]
   files.forEach(uploadFile)
}

function uploadFile(file, i) { 
  var Url_imageAdd = "mytargetUrl...."
  var xhr = new XMLHttpRequest()
  var formData = new FormData()
  xhr.open('POST', Url_imageAdd, true)
  xhr.upload.addEventListener("progress", function(e) {
    updateProgress(i, (e.loaded * 100.0 / e.total) || 100)
  })

  xhr.addEventListener('readystatechange', function(e) {
    if (xhr.readyState == 4 && xhr.status == 200) {
      document.getElementById('lConfirm').innerHTML="Files uploaded...."

      urlCount = parseInt($('#urlCount').val())
      $('#urlCount').val(urlCount+filescount)
      var imageSet = JSON.parse(xhr.responseText)
    } else if (xhr.readyState == 4 && xhr.status != 200) {
      alert("Upload Error....")
      window.location.reload();
    }
  })

  formData.append('img_file', file)
  formData.append('title',"mytitle")
  xhr.send(formData)
}
Jakob

Wenn Ihre uploadFileFunktion ein Promise zurückgibt, können Sie awaitoder einen .then(...)Rückruf mit verwenden Promise.all:

function uploadFile(file, i) { 
  return new Promise((resolve, reject) => {
    var Url_imageAdd = "mytargetUrl...."
    var xhr = new XMLHttpRequest()
    var formData = new FormData()
    xhr.open('POST', Url_imageAdd, true)
    xhr.upload.addEventListener("progress", function(e) {
      updateProgress(i, (e.loaded * 100.0 / e.total) || 100)
    })

    xhr.addEventListener('readystatechange', function(e) {
      if (xhr.readyState == 4 && xhr.status == 200) {
        document.getElementById('lConfirm').innerHTML="Files uploaded...."

        urlCount = parseInt($('#urlCount').val())
        $('#urlCount').val(urlCount+filescount)
        var imageSet = JSON.parse(xhr.responseText)
        resolve(imageSet)
      } else if (xhr.readyState == 4 && xhr.status != 200) {
        reject(new Error("Upload Error...."))
      }
    })

    formData.append('img_file', file)
    formData.append('title',"mytitle")
    xhr.send(formData)
  });
}

Jetzt können Sie dies tun:

async function handleFiles(files,i) {
   files = [...files]

   try {
     await Promise.all(files.map(uploadFile));
     // We've finished
   } catch (err) {
     alert('Upload failed!');
     window.location.reload();
   }
}

Oder wenn Sie sie in Reihe statt parallel ausführen möchten, mit einer Verzögerung von 2 Sekunden zwischen:

function delay(milliseconds) {
  return new Promise(resolve => {
    setTimeout(resolve, milliseconds);
  });
}

async function handleFiles(files,i) {
  files = [...files]

    for (let i = 0; i < files.length; i++) { 
        try {
          await delay(2000);
          await uploadFile(files[i], i);
        } catch (err) {
          alert('Upload failed!');
          window.location.reload();
        }
      }

  // We've finished
}

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Jquery - Suche verzögern, bis die Eingabe abgeschlossen ist

So verzögern Sie eine Javascript-Warnung, bis die Aktion abgeschlossen ist

Laden des Skripts verzögern, bis das Versprechen abgeschlossen ist

Warten, bis die asynchrone Aufgabe ihre Arbeit beendet hat

Warten Sie, bis eine Reaktionskomponente die Aktualisierung abgeschlossen hat

nativescript wartet auf Anfrage, bis vuex die Anfrage abgeschlossen hat

Wie kann man das Auslösen von Userform TextBox1_Change() verzögern, bis die Eingabe mehrerer Zeichen einzeln abgeschlossen ist?

Verzögerung Senden bis dahin ist die Funktion abgeschlossen

Wie kann ich Beans verzögern, bis der Scan aller Spring Cloud Connectors abgeschlossen ist?

Wie kann ich das Rendern verzögern, bis das Versprechen abgeschlossen ist?

AFTER UPDATE-Ausführung verzögern, bis andere Aktualisierungsprozesse abgeschlossen sind

Wartet der Spark-Treiber, bis alle Partitionen die Arbeit von rdd.foreachPartition abgeschlossen haben, bevor er fortfährt?

So stoppen Sie die Ausführung, bis die asynchrone Funktion ihre Aufgabe im Dart abgeschlossen hat

Wie verzögere ich eine Funktion, bis eine forEach-Anweisung abgeschlossen ist?

Verzögern Sie das Rendern der SwiftUI-Ansicht, bis das Laden des veröffentlichten Objekts abgeschlossen ist

Java & Spring - Abfrage des http-Endpunkts, bis der Server die Verarbeitung abgeschlossen hat

Selen: Wie kann man warten, bis AngularJS die Aktualisierung des DOM nach AJAX abgeschlossen hat?

Warten Sie, bis ServiceWorker die Registrierung abgeschlossen hat, bevor Sie sich anmelden

Kotlin - So warten Sie, bis die asynchrone Coroutine den Job abgeschlossen hat

Python 3.6.2 / Selenium 2.0 / AJAX - So warten Sie, bis das Skript die Serveranforderung abgeschlossen hat

Wie kann man warten, bis ng-repeat die Schleife abgeschlossen hat?

Warten Sie, bis Thunk die HTTP-Anforderung abgeschlossen hat, bevor Sie den Status überprüfen

Wie warte ich, bis meine Lambda-Funktion die Verarbeitung einer SQS-Warteschlange abgeschlossen hat?

Warten Sie, bis NSTask die Ausführung des Terminalbefehls abgeschlossen hat

Die Funktion kann nicht verzögert werden, bis die 'for'-Schleife vollständig abgeschlossen ist

Kafka - Verzögerung der Bindung, bis die komplexe Service-Initialisierung abgeschlossen ist

Heuschrecke – So verzögern Sie die Sammlung von RPS-Daten, bis alle Threads gestartet sind

So verzögern Sie die Ausführung der Javascript-Funktion, bis JSON geladen wurde

Wie kann ich in Qt die Rückgabe einer Memberfunktion verzögern, bis ein Signal empfangen wird?

TOP Liste

  1. 1

    So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

  2. 2

    Unity Build-Fehler: Der Name 'EditorUtility' ist im aktuellen Kontext nicht vorhanden

  3. 3

    TypeAhead.js zeigt keine Ausgangsschienen an?

  4. 4

    Deklarieren einer nicht initialisierten Variablen in der Klassendefinition in Python

  5. 5

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  6. 6

    spring-data-jpa: ORA-01795: Die maximale Anzahl von Ausdrücken in einer Liste beträgt 1000

  7. 7

    Warum funktioniert Phantomjs nicht mit dieser Site?

  8. 8

    Interpolieren Sie mit Python die 2D-Matrix entlang der Spalten

  9. 9

    numpy: Berechnen Sie die Ableitung der Softmax-Funktion

  10. 10

    Wie vermeide ich, dass die gesamte App neu geladen wird, wenn Nav.Link von React-Bootstrap verwendet wird?

  11. 11

    MongoDB eingebettetes Dokument unterscheiden und filtern

  12. 12

    Aktualisieren des Werts im Json-Objekt in Python

  13. 13

    Warum funktioniert das Umgebungslicht in diesem Beispiel nicht?

  14. 14

    Python gibt einen Fehler aus, dass eine Datei nicht vorhanden ist, wenn dies eindeutig der Fall ist

  15. 15

    Wie verwende ich Format-Table ohne Abschneiden von Werten?

  16. 16

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  17. 17

    Überprüfen Sie, ob der ausgewählte Wert 'YES' ist, wenn ja, aktivieren Sie ein Steuerelement mit Javascript

  18. 18

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  19. 19

    Holen Sie sich verwandte Pillen Inhalt mit angeklickten img in Angular

  20. 20

    Eclipse Oxygen - Projekte verschwinden

  21. 21

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

heißlabel

Archiv