Heim Web-Frontend js-Tutorial Wissenswertes über Javascript-Versprechen

Wissenswertes über Javascript-Versprechen

Oct 07, 2024 pm 08:21 PM

fun facts about Javascript Promises

Versprechen sind immer asynchron

Der Rückruf von Promise wird immer nach synchronem Code ausgeführt


const promise = Promise.resolve(); 
promise.then(() => console.log('async')); 
console.log('sync');

//sync
//async



Verkettete Versprechen geben neue Versprechen zurück

Promise gibt dann bei jedem Aufruf ein neues Versprechen zurück


const p = Promise.resolve(); 
const chain = p.then(() => {}); 
console.log(p === chain); //false



Für immer dann()

Promises unterstützen unendliche Verkettung


Promise.resolve(1) 
    .then(value => value + 1) 
    .then(value => value + 1) 
    .then(value => console.log(value)); // 3



Sie können Rückrufe in Versprechen umwandeln

Sie können älteren Code, der Callback verwendet, in das Versprechen einschließen, mit modernem Async/Await zu funktionieren


function asyncOperation(callback) { 
    setTimeout(() => callback(null, 'Im a callback'), 1000); 
} 

const promisified = () => new Promise((resolve, reject) => { 
    asyncOperation((err, result) => { 
        if (err) reject(err); 
        else resolve(result); 
    }); 
});

promisified().then(result => console.log(result)); // "Im a callback"



Promise.resolve() erstellt nicht immer ein neues Versprechen

Wenn Sie einen Nicht-Promise-Wert übergeben, verpackt Promise.resolve() ihn in ein aufgelöstes Versprechen. Aber wenn Sie ein Versprechen bestehen, gibt es einfach dasselbe Versprechen zurück.


const p1 = Promise.resolve('Hello'); 
const p2 = Promise.resolve(p1); 
console.log(p1 === p2); // true



Sie können Fehler überall in der Kette behandeln


Promise.reject('Error!')
  .then(() => console.log('This will not run'))
  .then(() => console.log('This will also not run'))
  .catch(err => console.log('Caught:', err))
  .then(() => console.log('This will run'));



„final()“ übergibt keine Werte

Die Methode „final()“ empfängt oder ändert keine aufgelösten Werte. Es wird zum Bereinigen von Ressourcen verwendet und wird unabhängig davon ausgeführt, ob das Versprechen aufgelöst oder abgelehnt wird.


Promise.resolve('resolved')
  .then(value => console.log(value))
  .finally(() => console.log('Cleanup'))

//resolved
//cleanup



Versprechen sind unveränderlich, sobald sie erfüllt sind

Sobald ein Versprechen erfüllt (gelöst oder abgelehnt) ist, ist sein Zustand unveränderlich. Danach kann es nicht mehr geändert werden, auch wenn Sie erneut versuchen, es zu lösen/ablehnen.


const p = new Promise((resolve, reject) => {
  resolve('First');
  resolve('Second');
});
p.then(value => console.log(value));  //"First" (only the first value is used)



Sie können Catch() verketten, um bestimmte Fehler zu behandeln


Promise.reject('type C error')
  .catch(err => {
    if (err === 'type A error') console.log('handle type A');
    throw err;
  })
  .catch(err => {
    if (err === 'type B error') console.log('handle type B');
    throw err;
  })
  .catch(err => {
    if (err === 'type C error') console.log('handle type C');
    throw err;
  })



Sie können „await“ mit nicht versprechenden Werten verwenden


async function demo() {
  const result = await 42; //not a promise
  console.log(result);      
}
demo(); //42


Das ist es! Vielen Dank, dass Sie bis hierher gelesen haben. Bis zum nächsten Mal!

Das obige ist der detaillierte Inhalt vonWissenswertes über Javascript-Versprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1517
276
Erweiterte JavaScript -Bereiche und Kontexte Erweiterte JavaScript -Bereiche und Kontexte Jul 24, 2025 am 12:42 AM

Der Umfang von JavaScript bestimmt den Zugangsumfang von Variablen, die in globale, Funktions- und Blockebene unterteilt sind. Der Kontext bestimmt die Richtung davon und hängt von der Funktionsaufrufmethode ab. 1. Scopes umfassen globaler Umfang (überall zugänglich), Funktionsumfang (nur innerhalb der Funktion gültig) und Blockebene (LET und const sind innerhalb von {} gültig). 2. Der Ausführungskontext enthält das variable Objekt, die Bereichskette und die Werte davon. Dies weist auf globale oder undefinierte in der normalen Funktion hin, die Methode richtet sich auf das Anrufobjekt, der Konstruktor auf das neue Objekt und kann auch explizit durch Anruf/Anwendung/Bindung angegeben werden. 3.. Verschluss bezieht sich auf Funktionen, die auf externe Bereiche zugreifen und sich erinnern. Sie werden häufig zur Kapselung und zum Cache verwendet, können aber verursachen

Vue 3 -Kompositions -API gegen Optionen API: Ein detaillierter Vergleich Vue 3 -Kompositions -API gegen Optionen API: Ein detaillierter Vergleich Jul 25, 2025 am 03:46 AM

Die Kompositionapi in VUE3 eignet sich besser für komplexe Logik- und Typableitung, und Optionsapi eignet sich für einfache Szenarien und Anfänger. 1. Optionsapi organisiert Code nach Optionen wie Daten und Methoden und hat eine klare Struktur, aber komplexe Komponenten werden fragmentiert. 2. Die Zusammensetzung verwendet ein Setup, um die verwandte Logik zu konzentrieren, die der Wartung und Wiederverwendung förderlich ist. 3. Compositionapi realisiert konfliktfreie und parameterizierbare logische Wiederverwendung durch komponierbare Funktionen, was besser ist als Mixin; 4. COMPOSECTI hat eine bessere Unterstützung für Typscript und eine genauere Typableitung; 5. Es gibt keinen signifikanten Unterschied in der Leistung und des Verpackungsvolumens der beiden; 6.

Wie bekomme ich den Wert eines ausgewählten Optionsfelds mit JS? Wie bekomme ich den Wert eines ausgewählten Optionsfelds mit JS? Jul 18, 2025 am 04:17 AM

Es gibt zwei Kernmethoden, um den ausgewählten Optionsknopfwert zu erhalten. 1. Verwenden Sie QuerySelector, um das ausgewählte Element direkt zu erhalten, und verwenden Sie die Eingabe [name = "Your-Radio-Name"]: Überprüfter Selektor, um das ausgewählte Element zu erhalten und das Wertattribut zu lesen. Es ist für moderne Browser geeignet und hat einen präzisen Code. 2. Verwenden Sie das Dokument. Darüber hinaus müssen Sie auf die Schreibweise des Namensattributs, die Behandlung von nicht ausgewählten Situationen und die dynamische Belastung des Inhalts achten

Erforschen der Typ -Zwangsregeln in JavaScript Erforschen der Typ -Zwangsregeln in JavaScript Jul 21, 2025 am 02:31 AM

Das Typ -Casting ist das Verhalten der automatischen Konvertierung eines Werttyps in einen anderen Typ in JavaScript. Zu den allgemeinen Szenarien gehören: 1. Bei Verwendung von Operatoren, wenn eine Seite eine String ist, wird die andere Seite ebenfalls in eine Zeichenfolge konvertiert, wie z. B. '5' 5. Das Ergebnis ist "55"; 2. Im booleschen Kontext werden nicht-Boolenische Werte implizit in boolesche Typen wie leere Zeichenfolgen, 0, Null, undefined usw. konvertiert, die als falsch angesehen werden; 3.. Null nimmt an numerischen Operationen teil und wird in 0 umgewandelt, und undefined wird in NAN umgewandelt. 4. Die durch implizite Umwandlung verursachten Probleme können durch explizite Konvertierungsfunktionen wie Nummer (), String () und Boolean () vermieden werden. Das Beherrschen dieser Regeln hilft

Mastering JavaScript -Parallelitätsmuster: Webarbeiter vs. Java -Threads Mastering JavaScript -Parallelitätsmuster: Webarbeiter vs. Java -Threads Jul 25, 2025 am 04:31 AM

Es gibt einen wesentlichen Unterschied zwischen den Webworkers und Javatheads von JavaScript in der gleichzeitigen Verarbeitung. 1. JavaScript nimmt ein Single-Thread-Modell an. Webworker ist ein unabhängiger Thread, der vom Browser bereitgestellt wird. Es ist geeignet, zeitaufwändige Aufgaben auszuführen, die die Benutzeroberfläche nicht blockieren, aber das DOM nicht bedienen können. 2. Java unterstützt echtes Multithreading von der Sprachebene, die über die Thread-Klasse erstellt wurde und für eine komplexe gleichzeitige Logik und die serverseitige Verarbeitung geeignet ist. 3.. Webworker verwenden Postmessage (), um mit dem Hauptfaden zu kommunizieren, der sehr sicher und isoliert ist. Java -Threads können Speicher teilen, sodass Synchronisierungsprobleme aufmerksam werden müssen. V.

Wie format man ein Datum in JS? Wie format man ein Datum in JS? Jul 20, 2025 am 12:10 AM

Formatdaten in JavaScript können durch native Methoden oder Bibliotheken von Drittanbietern implementiert werden. 1. Verwenden Sie natives Datumsobjektstich: Holen Sie sich das Datumsteil durch Getvollerweise, GetMonth, getDate und andere Methoden und spleifen Sie es manuell in yjyy-mm-dd und andere Formate, was für leichte Bedürfnisse geeignet ist und nicht auf Bibliotheken von Drittanbietern beruht. 2. Verwenden Sie die Tolocaledatestring -Methode: Sie können wie ein MM/DD/YYYY -Format gemäß den lokalen Gewohnheiten ausgeben, unterstützen Sie mehrsprachig, aber das Format kann aufgrund verschiedener Umgebungen inkonsistent sein. 3.. Verwenden Sie Bibliotheken von Drittanbietern wie Day.js oder Date-Fns: Bietet prägnante Syntax- und Richfunktionen, die für häufige Operationen geeignet sind oder wenn Erweiterbarkeit erforderlich ist, wie z. B. DayJS ()

Erstellen eines CLI -Tools mit Node.js Erstellen eines CLI -Tools mit Node.js Jul 24, 2025 am 03:39 AM

Initialisieren Sie das Projekt und erstellen Sie Package.json; 2. Erstellen Sie einen Eintragskriptindex.js mit Shebang; 3.. Registrieren Sie Befehle über Bin Fields in package.json; 4. Verwenden Sie Yargs und andere Bibliotheken, um die Befehlszeilenparameter zu analysieren. 5. Verwenden Sie NPMLink Local Test; 6. Hilfe, Version und Optionen hinzufügen, um die Erfahrung zu verbessern. 7. optional über NPMPublish veröffentlichen; 8. optional automatischen Abschluss mit Yargs; Erstellen Sie schließlich praktische CLI -Tools durch angemessene Struktur und Benutzererfahrungsdesign, erstellen Sie Automatisierungsaufgaben oder verteilen Sie Widgets und enden Sie sie mit vollständigen Sätzen.

Wie erstelle ich Elemente in JS? Wie erstelle ich Elemente in JS? Jul 25, 2025 am 03:56 AM

Verwenden Sie document.createelement (), um neue Elemente zu erstellen; 2. Anpassen von Elementen durch TextContent, Classlist, SetAttribute und andere Methoden; 3.. Verwenden Sie appendChild () oder flexibler append () -Methoden, um dem DOM Elemente hinzuzufügen. V. Der vollständige Vorgang besteht darin, → Anpassen → Add zu erstellen, und Sie können den Seiteninhalt dynamisch aktualisieren.

See all articles