Inhaltsverzeichnis
Versprechen in js
Konzept
Das Wunder von Versprechen ist, dass angesichts unseres vorherigen Returns und Throws jedes Promise eine then()-Funktion und eine Catch()-Funktion bereitstellt, die eigentlich eine then(null, ...)-Funktion ist.
8. Ideal für die Handhabung mehrerer losgelöster Promise
});;
Das Folgende ist eine unbegrenzte Anzahl von Parallelitäts- und Lesedateiinformationen
.timeout(int ms [, String message]) -> Promise
ASYNC
Heim Web-Frontend js-Tutorial Das Artefakt in Javascript – Versprechen

Das Artefakt in Javascript – Versprechen

Feb 10, 2017 am 09:58 AM
javascript promise

Versprechen in js

Das eigentliche Problem mit der Callback-Funktion besteht darin, dass sie uns die Fähigkeit nimmt, die Schlüsselwörter return und throw zu verwenden. Und Promise löst das alles sehr gut.

Im Juni 2015 wurde endlich die offizielle Version von ECMAScript 6 veröffentlicht.

ECMAScript ist der internationale Standard für die JavaScript-Sprache und JavaScript ist die Implementierung von ECMAScript. Das Ziel von ES6 besteht darin, die Verwendung der JavaScript-Sprache zum Schreiben großer und komplexer Anwendungen zu ermöglichen und eine Entwicklungssprache auf Unternehmensebene zu werden.

Konzept

ES6 stellt nativ Promise-Objekte bereit.

Das sogenannte Promise ist ein Objekt, das zur Übermittlung von Nachrichten für asynchrone Vorgänge verwendet wird. Es stellt ein Ereignis dar (normalerweise eine asynchrone Operation), dessen Ergebnis erst in der Zukunft bekannt ist, und dieses Ereignis stellt eine einheitliche API für die weitere Verarbeitung bereit.

Promise-Objekte haben die folgenden zwei Eigenschaften.

(1) Der Zustand des Objekts wird von der Außenwelt nicht beeinflusst. Das Promise-Objekt stellt einen asynchronen Vorgang dar und hat drei Zustände: Ausstehend (in Bearbeitung), Gelöst (abgeschlossen, auch als „Erfüllt“ bezeichnet) und Abgelehnt (fehlgeschlagen). Nur das Ergebnis der asynchronen Operation kann den aktuellen Status bestimmen, und keine andere Operation kann diesen Status ändern. Daher stammt auch der Name Promise, der auf Englisch „Verpflichtung“ bedeutet und bedeutet, dass er nicht auf andere Weise geändert werden kann.

(2) Sobald sich der Status ändert, ändert er sich nicht mehr und dieses Ergebnis kann jederzeit abgerufen werden. Es gibt nur zwei Möglichkeiten, den Status eines Promise-Objekts zu ändern: von „Ausstehend“ zu „Gelöst“ und von „Ausstehend“ zu „Abgelehnt“. Solange diese beiden Situationen auftreten, wird der Zustand gefestigt und wird sich nicht mehr ändern und dieses Ergebnis immer beibehalten. Selbst wenn die Änderung bereits erfolgt ist, erhalten Sie das Ergebnis sofort, wenn Sie dem Promise-Objekt eine Rückruffunktion hinzufügen. Das ist etwas völlig anderes als ein Ereignis. Das Besondere an einem Ereignis ist, dass man das Ergebnis nicht erhält, wenn man es verpasst und noch einmal zuhört.

Mit dem Promise-Objekt können asynchrone Vorgänge als synchroner Vorgangsprozess ausgedrückt werden, wodurch Schichten verschachtelter Rückruffunktionen vermieden werden. Darüber hinaus bieten Promise-Objekte eine einheitliche Schnittstelle, die die Steuerung asynchroner Vorgänge erleichtert.

Versprechen hat auch einige Nachteile. Erstens kann Promise nicht storniert werden. Sobald es erstellt wurde, wird es sofort ausgeführt und kann nicht auf halbem Weg storniert werden. Zweitens werden von Promise intern ausgelöste Fehler nicht extern reflektiert, wenn die Rückruffunktion nicht festgelegt ist. Drittens ist es im Status „Ausstehend“ unmöglich zu wissen, in welcher Phase sich der aktuelle Fortschritt befindet (gerade begonnen oder kurz vor dem Abschluss).

var promise = new Promise(function(resolve, reject) { if (/* 异步操作成功 */){
 resolve(value);
 } else {
 reject(error);
 }
});

promise.then(function(value) { // success
}, function(value) { // failure
});
Nach dem Login kopieren

Der Promise-Konstruktor akzeptiert eine Funktion als Parameter. Die beiden Parameter der Funktion sind die Auflösungsmethode und die Ablehnungsmethode.

Wenn der asynchrone Vorgang erfolgreich ist, verwenden Sie die Auflösungsmethode, um den Status des Promise-Objekts von „unvollständig“ in „erfolgreich“ zu ändern (d. h. von „ausstehend“ in „gelöst“) Wenn der asynchrone Vorgang fehlschlägt, verwenden Sie dann die Ablehnungsmethode, um den Status des Promise-Objekts von „unvollständig“ in „fehlgeschlagen“ zu ändern (d. h. von „ausstehend“ in „abgelehnt“).

Basis-API

    Promise.resolve()
  1. Promise.reject()
  2. Promise.prototype.then()
  3. Promise.prototype.catch()
  4. Promise.all() // Alle abgeschlossen
  5.  var p = Promise.all([p1,p2,p3]);
    Nach dem Login kopieren
  6. Promise.race() // Rennen, schließe einfach eins ab
  7. Fortgeschritten

Das Wunder von Versprechen ist, dass angesichts unseres vorherigen Returns und Throws jedes Promise eine then()-Funktion und eine Catch()-Funktion bereitstellt, die eigentlich eine then(null, ...)-Funktion ist.

Wir können Machen Sie drei Dinge:
    somePromise().then(functoin(){        // do something
    });
Nach dem Login kopieren

1. Kapseln Sie synchronen und asynchronen Code
1. return 另一个 promise2. return 一个同步的值 (或者 undefined)3. throw 一个同步异常 ` throw new Eror('');`
Nach dem Login kopieren

2. Erfassen Sie synchrone Ausnahmen
"
new Promise(function (resolve, reject) {
 resolve(someValue);
 });
"
写成

"
Promise.resolve(someValue);
"
Nach dem Login kopieren

Wenn es sich um synchronen Code handelt kann geschrieben werden als
 new Promise(function (resolve, reject) { throw new Error('悲剧了,又出 bug 了');
 }).catch(function(err){ console.log(err);
 });
Nach dem Login kopieren

3. Mehrere Ausnahmen erfassen, genauere Erfassung
    Promise.reject(new Error("什么鬼"));
Nach dem Login kopieren

4 Holen Sie sich den Rückgabewert von zwei Versprechen
somePromise.then(function() { return a.b.c.d();
}).catch(TypeError, function(e) { 
//If a is defined, will end up here because //it is a type error to reference property of undefined
}).catch(ReferenceError, function(e) { //Will end up here if a wasn't defined at all
}).catch(function(e) { //Generic catch-the rest, error wasn't TypeError nor //ReferenceError
});
Nach dem Login kopieren

5 . schließlich
1. .then 方式顺序调用2. 设定更高层的作用域3. spread
Nach dem Login kopieren

6. binden
任何情况下都会执行的,一般写在 catch 之后
Nach dem Login kopieren

Oder Sie können dies tun
somethingAsync().bind({})
.spread(function (aValue, bValue) { this.aValue = aValue; this.bValue = bValue; return somethingElseAsync(aValue, bValue);
})
.then(function (cValue) {     return this.aValue + this.bValue + cValue;
});
Nach dem Login kopieren

Es gibt jedoch viele Unterschiede,
var scope = {};
somethingAsync()
.spread(function (aValue, bValue) { scope.aValue = aValue; scope.bValue = bValue;
 return somethingElseAsync(aValue, bValue);
})
.then(function (cValue) {
 return scope.aValue + scope.bValue + cValue;
});
Nach dem Login kopieren

    Sie müssen zunächst erklären, dass die Gefahr von Ressourcenverschwendung und Speicherlecks besteht
  1. kann nicht im Kontext eines Ausdrucks verwendet werden
  2. Weniger effizient
  3. alle. Sehr nützlich für die Verarbeitung einer Promise-Liste mit dynamischer Größe

8. Ideal für die Handhabung mehrerer losgelöster Promise

9. Behandeln Sie eine Kartensammlung von Versprechen. Nur eine schlägt fehl und alle Ausführungen enden
"var join = Promise.join;join(getPictures(), getComments(), getTweets(),
 function(pictures, comments, tweets) {
 console.log("in total: " + pictures.length + comments.length + tweets.length);
});
"
Nach dem Login kopieren

10 stack);
"
Promise.props({ pictures: getPictures(),
 comments: getComments(),
 tweets: getTweets()
}).then(function(result) {
 console.log(result.tweets, result.pictures, result.comments);
});
"
Nach dem Login kopieren
});

});;

"Promise.some([
 ping("ns1.example.com"),
 ping("ns2.example.com"),
 ping("ns3.example.com"),
 ping("ns4.example.com")
], 2).spread(function(first, second) { console.log(first, second);
}).catch(AggregateError, function(err) {
Nach dem Login kopieren

11.map(Funktionsmapper [, Objektoptionen])


Option: Parallelität und gefunden

"
有可能,失败的 promise 比较多,导致,Promsie 永远不会 fulfilled
Nach dem Login kopieren

Das Folgende ist eine unbegrenzte Anzahl von Parallelitäts- und Lesedateiinformationen

用于处理一个数组,或者 promise 数组,
Nach dem Login kopieren

Ergebnis

    map(..., {concurrency: 1});
Nach dem Login kopieren

11.reduce(Funktionsreduzierer [ , dynamischer Anfangswert]) -> Promise

var Promise = require("bluebird");
var join = Promise.join;
var fs = Promise.promisifyAll(require("fs"));
var concurrency = parseFloat(process.argv[2] || "Infinity");
var fileNames = ["file1.json", "file2.json"];
Promise.map(fileNames, function(fileName) { 
return fs.readFileAsync(fileName)
 .then(JSON.parse)
 .catch(SyntaxError, function(e) {
 e.fileName = fileName; throw e;
 })
}, {concurrency: concurrency}).then(function(parsedJSONs) { console.log(parsedJSONs);
}).catch(SyntaxError, function(e) { console.log("Invalid JSON in file " + e.fileName + ": " + e.message);
});
Nach dem Login kopieren

.delay(int ms) -> Promise
$ sync && echo 3 > /proc/sys/vm/drop_caches
$ node test.js 1reading files 35ms
$ sync && echo 3 > /proc/sys/vm/drop_caches
$ node test.js Infinity
reading files: 9ms
Nach dem Login kopieren

.timeout(int ms [, String message]) -> Promise

Promise.reduce(["file1.txt", "file2.txt", "file3.txt"], 
function(total, fileName) { 
return fs.readFileAsync(fileName, "utf8").then(
function(contents) { 
return total + parseInt(contents, 10);
 });
}, 0).then(function(total) { //Total is 30
});
Nach dem Login kopieren

Promise-Implementierung
  1. q
  2. Bluebird

co
  1. wann

ASYNC

Die Async-Funktion ist wie die Promise- und Generator-Funktionen eine Methode, die zum Ersetzen von Callback-Funktionen und zum Lösen asynchroner Vorgänge verwendet wird. Es handelt sich im Wesentlichen um syntaktischen Zucker für die Generatorfunktion. Asynchrone Funktionen sind nicht Teil von ES6, aber in ES7 enthalten.

Das Obige ist der Inhalt von Promise, dem Artefakt in Javascript. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


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

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.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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)

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Dec 17, 2023 pm 12:09 PM

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

Halten Sie Ihr Wort: Die Vor- und Nachteile der Einhaltung Ihrer Versprechen Halten Sie Ihr Wort: Die Vor- und Nachteile der Einhaltung Ihrer Versprechen Feb 18, 2024 pm 08:06 PM

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

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript Dec 17, 2023 am 09:39 AM

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Erfahren Sie mehr über Promise.resolve() Erfahren Sie mehr über Promise.resolve() Feb 18, 2024 pm 07:13 PM

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

See all articles