


Detaillierte Erläuterung der sequentiellen Ausführung von promsie.all und Promise
Dieser Artikel stellt hauptsächlich die relevanten Informationen zum WeChat-Applet promsie.all und zur sequentiellen Ausführung von Versprechen vor. Ich hoffe, dass dieser Artikel allen helfen kann.
WeChat-Applet promsie.all und Promise werden nacheinander ausgeführt
Vorwort
Kürzlich Bei der Entwicklung kleiner Programme ist eine der Anforderungen, auf die ich gestoßen bin, das Einreichen von Bildern. WeChat lädt hier zuerst das Bild hoch, und der Hintergrund gibt Ihnen den Bildnamen und die Adresse zurück, und dann fügen Sie das ein Bildinformationen. Gehen Sie zur entsprechenden Position des Formulars und senden Sie das Formular ab. Hier erfahren Sie, wie Sie die Bildanforderung vor dem Hochladen des Formulars hochladen. Wenn das WeChat-Applet mehrere Bilder enthält, können Sie diese nur einzeln hochladen . Um es einfach auszudrücken: Was soll ich tun, nachdem ich das Bild hochgeladen habe (mehrere Anfragen), den Rückgabewert erhalten und dann das Formular hochgeladen habe?
2. Promise.all und Promise.race
Lassen Sie uns zunächst die Unterschiede zwischen den Methoden Promise.all und Promise.race vorstellen. Promise.all (iterierbar) Die Methode gibt ein Versprechen zurück, wenn alle Versprechen in den iterierbaren Parametern abgeschlossen wurden oder wenn das erste übergebene Versprechen (das sich auf die Ablehnung bezieht) fehlschlägt. iterable ist ein iterierbares Objekt, im Allgemeinen jedoch ein Array. Der Rückgabewert ist ebenfalls ein Promise-Objekt.
Einige Punkte müssen klargestellt werden. Promise.all führt mehrere Promise-Objekte gleichzeitig aus, und die Parameter des zurückgegebenen Promise-Objekts sind ein Array, und jedes Element im Array ist auch ein iterierbares Objekt . Die Bestellung wird zurückgegeben.
Die Promise.race(iterable)-Methode gibt ein neues Versprechen zurück. Solange der Parameter iterable ein Versprechensobjekt „resolve“ oder „reject“ enthält, wird das neue Versprechen sofort abgeschlossen (resolve)“ oder „ablehnen“ und erhalten Sie den Rückgabewert oder die Fehlerursache des vorherigen Versprechenobjekts. Solange also eines der Iterables abgeschlossen wird oder fehlschlägt, wird sofort ein Promise-Objekt zurückgegeben. Aus dem Wort „Rasse“ lässt sich auch schließen, dass der Erstankömmling sofort ein Versprechensobjekt zurückgibt.
Gemäß der obigen Definition verwenden wir die Promise.all-Methode, um unsere Bedürfnisse zu erfüllen.
//存储promise对象的数组 let promiseArr = []; //图片地址数组 let imageList = []; //将图片地址的上传的promise对象加入到promiseArr for (let i = 0; i < imageList.length; i++) { let promise = new Promise((resolve, reject) => { //微信图片上传 wx.uploadFile({ url: 'https://xxx.xxx.xxx/api/uploadImage', filePath: imageList[i], name: 'file', success: function(res) { //可以对res进行处理,然后resolve返回 resolve(res); }, fail: function (error) { reject(error); }, complete: function (res) { }, }) }); promiseArr.push(promise) } //Promise.all处理promiseArr数组中的每一个promise对象 Promise.all(promiseArr).then((result) => { //对返回的result数组进行处理 })
3. Probleme mit dem WeChat-Miniprogramm
Ich arbeite an der Bild-Upload-Funktion von WeChat Hier können Sie nur das Bild zuerst hochladen und dann den Bildnamen und die Adresse zurückgeben.
Hier verwenden wir die Promise.all-Methode, aber es gibt ein Problem, dass Promise.all gleichzeitig ausgeführt wird, aber das WeChat-Applet kann nur 10 gleichzeitige Anfragen stellen.
Für das Hochladen von Bildern müssen Sie möglicherweise mehr als 10 Bilder gleichzeitig hochladen, was mehr als 10 gleichzeitige Anfragen bedeutet. In diesem Fall meldet WeChat einen Fehler
„WAService.js:4 uploadFile :fail createUploadTask:fail überschreitet die maximale Anzahl an Upload-Verbindungen von 10“.
4. Sequentielle Promise-Ausführungsverarbeitung
Weil Promise.all mehrere Promsie-Objekte gleichzeitig ausführt Zeit, daher gibt es eine Begrenzung für die Anzahl solcher Parallelitäten, die jeweils nur 10 sein können. Wenn Sie diese Grenze durchbrechen möchten, können Sie jedes Versprechen nacheinander ausführen.
Der Code lautet wie folgt:
//顺序处理函数 function sequenceTasks(tasks) { //记录返回值 function recordValue(results, value) { results.push(value); return results; } let pushValue = recordValue.bind(null, []); let promise = Promise.resolve(); // 处理tasks数组中的每个函数对象 for (let i = 0; i < tasks.length; i++) { let task = tasks[i]; promise = promise.then(task).then(pushValue); } return promise; } //函数数组,每个函数的返回值是一个promise对象 let promiseFuncArr = []; //图片地址数组 let imageList = []; //将图片地址的上传的函数加入到promiseFuncArr数组中 for (let i = 0; i < imageList.length; i++) { let promiseTemp = function(){ return new Promise((resolve, reject) => { //微信图片上传 wx.uploadFile({ url: 'https://xxx.xxx.xxx/api/uploadImage', filePath: imageList[i], name: 'file', success: function(res) { //可以对res进行处理,然后resolve返回 resolve(res); }, fail: function (error) { reject(error); }, complete: function (res) { }, }) }); }; promiseFuncArr.push(promiseTemp) } sequenceTasks(promiseFuncArr).then((result) => { //对返回的result数组进行处理 });
1. Hier ist eine Erklärung der Funktion der sequenceTasks-Funktion
Erster recordValue Die Funktion übergibt zwei Werte, einer ist ein Ergebnisarray, der andere ist ein Wert, value ist der übergebene Wert, results.push(value); schiebt jeden Wert in das Ergebnisarray und gibt dann den zurück Ergebnisarray.
let pushValue = recordValue.bind(null, []);
pushValue ist ebenfalls ein Funktionsobjekt. Der erste Parameter wird durch null dargestellt, was den Zeiger der Funktion nicht ändert Dies bedeutet, dass pushValue eine Funktion (Wert) ist und die Parameter als Wert übergeben werden.
promise = promise.then(task).then(pushValue);
task ist eine Funktion, und die Funktion gibt ein Promise-Objekt zurück. In unserem Fall ist es die Funktion zum Hochladen von Bildern , then(pushValue), pushValue ist eine Funktion der Funktion (value). Value stellt den Rückgabewert dar, nachdem das Bild hochgeladen wurde, den Rückgabewert in das Ergebnisarray schiebt, ihn nacheinander ausführt und ihn nacheinander zum Ergebnisarray hinzufügt und kehrt schließlich zurück. Sie können ein Array von Objekten abrufen, und das Array enthält die Ergebnisse, die bei der sequentiellen Ausführung zurückgegeben werden.
2. Die for-Schleife in sequenceTasks kann auch in der folgenden Reduzierungsmethode geschrieben werden:
function sequenceTasks(tasks) { //记录返回值 function recordValue(results, value) { results.push(value); return results; } let pushValue = recordValue.bind(null, []); return tasks.reduce(function (promise, task) { return promise.then(task).then(pushValue); }, Promise.resolve()); }
Verwandte Empfehlungen:
headjs implementiert das parallele Laden von Websites, aber die sequentielle Ausführung von JS
Detaillierte Einführung in die Ausführungsergebnisse der Ladereihenfolge von Klassen in Java
Wie ist die Ausführungsreihenfolge des JS-Codes?
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der sequentiellen Ausführung von promsie.all und Promise. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Es ist kein Geheimnis, dass der Internet Explorer schon lange in Ungnade gefallen ist, aber mit der Einführung von Windows 11 kommt die Realität. Anstatt in Zukunft manchmal den IE zu ersetzen, ist Edge jetzt der Standardbrowser im neuesten Betriebssystem von Microsoft. Vorerst können Sie den Internet Explorer noch in Windows 11 aktivieren. Allerdings hat IE11 (die neueste Version) bereits ein offizielles Ruhestandsdatum, nämlich den 15. Juni 2022, und die Uhr tickt. Vor diesem Hintergrund ist Ihnen vielleicht aufgefallen, dass Internet Explorer manchmal Edge öffnet, und es gefällt Ihnen möglicherweise nicht. Warum passiert das also? existieren

Immer mehr Benutzer beginnen mit der Aktualisierung des Win11-Systems. Da jeder Benutzer unterschiedliche Nutzungsgewohnheiten hat, verwenden viele Benutzer immer noch den IE11-Browser. Was soll ich also tun, wenn das Win11-System den IE-Browser nicht verwenden kann? Unterstützt Windows11 immer noch ie11? Werfen wir einen Blick auf die Lösung. Lösung des Problems, dass Win11 den ie11-Browser nicht verwenden kann 1. Klicken Sie zunächst mit der rechten Maustaste auf das Startmenü und wählen Sie „Eingabeaufforderung (Administrator)“, um es zu öffnen. 2. Geben Sie nach dem Öffnen direkt „Netshwinsockreset“ ein und drücken Sie zur Bestätigung die Eingabetaste. 3. Geben Sie nach der Bestätigung „netshadvfirewallreset&rdqu“ ein

Im täglichen Leben stoßen wir oft auf Probleme zwischen Versprechen und Erfüllung. Ob in einer persönlichen Beziehung oder einer Geschäftstransaktion: Das Einhalten von Versprechen ist der Schlüssel zum Aufbau von Vertrauen. Allerdings sind die Vor- und Nachteile eines Engagements oft umstritten. In diesem Artikel werden die Vor- und Nachteile von Verpflichtungen untersucht und einige Ratschläge gegeben, wie Sie Ihr Wort halten können. Die versprochenen Vorteile liegen auf der Hand. Erstens schafft Engagement Vertrauen. Wenn jemand sein Wort hält, lässt er andere glauben, dass er eine vertrauenswürdige Person ist. Vertrauen ist die Bindung zwischen Menschen, die Menschen mehr machen kann

Vue ist ein beliebtes Front-End-Framework, und bei der Entwicklung von Anwendungen treten häufig verschiedene Fehler und Probleme auf. Unter diesen ist Uncaught(inpromise)TypeError ein häufiger Fehlertyp. In diesem Artikel werden wir die Ursachen und Lösungen diskutieren. Was ist Uncaught(inpromise)TypeError? Der Fehler Uncaught(inpromise)TypeError tritt normalerweise auf

Eine detaillierte Erklärung von Promise.resolve() erfordert spezifische Codebeispiele. Promise ist ein Mechanismus in JavaScript zur Verarbeitung asynchroner Vorgänge. In der tatsächlichen Entwicklung ist es häufig erforderlich, einige asynchrone Aufgaben zu verarbeiten, die nacheinander ausgeführt werden müssen, und die Methode Promise.resolve () wird verwendet, um ein erfülltes Promise-Objekt zurückzugeben. Promise.resolve() ist eine statische Methode der Promise-Klasse, die a akzeptiert

In letzter Zeit haben viele Win10-Benutzer festgestellt, dass ihr IE-Browser bei der Verwendung von Computerbrowsern immer automatisch zum Edge-Browser springt. Wie kann man also den automatischen Sprung zum Edge beim Öffnen des IE in Win10 deaktivieren? Lassen Sie diese Website den Benutzern sorgfältig vorstellen, wie sie beim Öffnen des IE in Win10 automatisch zum Rand springen und schließen. 1. Wir melden uns beim Edge-Browser an, klicken auf ... in der oberen rechten Ecke und suchen nach der Dropdown-Einstellungsoption. 2. Nachdem wir die Einstellungen eingegeben haben, klicken Sie in der linken Spalte auf Standardbrowser. 3. Abschließend aktivieren wir in der Kompatibilität das Kontrollkästchen, um ein erneutes Laden der Website im IE-Modus zu verhindern, und starten den IE-Browser neu.

Der 15. Juni 2022 ist der Tag, an dem Microsoft den Support für Internet Explorer 11 (IE11) beendet und sein Kapitel über Legacy-Browser abschließt. Das Unternehmen erinnert Nutzer bereits seit Längerem an dieses End-of-Life-Datum und fordert sie dazu auf, einen Umstieg auf Microsoft Edge zu planen. Microsoft bündelt IE11 mit Windows 8.1 als modernen Standard-Webbrowser für Windows. Obwohl er nie die (aktuellen) Höhen von Chrome erreichte, war er 2014 nach IE8 der am zweithäufigsten verwendete Desktop-Browser. Natürlich mit 20

Lösungen für IE-Verknüpfungen, die nicht gelöscht werden können: 1. Berechtigungsprobleme; 3. Softwarekonflikte; 6. IE-Probleme; 9. Überprüfen Sie den Zielpfad der Verknüpfung. 10. Berücksichtigen Sie andere Faktoren. 11. Wenden Sie sich an Fachleute. Detaillierte Einführung: 1. Klicken Sie mit der rechten Maustaste auf die Verknüpfung, wählen Sie „Eigenschaften“ und stellen Sie sicher, dass Sie über ausreichende Berechtigungen zum Löschen der Verknüpfung verfügen. Wenn nicht, können Sie versuchen, die Verknüpfung auszuführen usw .
