Wie verschiebe ich ein ES6-Versprechen wie jquery Deferred?Jquery

JQuery-Programmierung
Anonymous
 Wie verschiebe ich ein ES6-Versprechen wie jquery Deferred?

Post by Anonymous »

1. Ich verwende es6 Promise, aber die Syntax ist falsch.

Ich verwende es6 und möchte einen verzögerten Bestätigungsdialog erstellen:

Code: Select all

// First, create an empty promise:
let promise = new Promise((resolve, reject) => {})

// Then, show the dialog:
let $dialog = $('#dialog-confirm').show();

// FAIL: I want to trigger the promise resolver, but failed.
$dialog.find('.btn-yes').click(() => { promise.resolve(); })
$dialog.find('.btn-no').click(() => { promise.reject(); })
Als ich auf die Schaltfläche geklickt habe, ist es fehlgeschlagen, weil das Versprechen nicht über die Methoden „reject“ und „resolve“ verfügt.


Uncaught TypeError: Promise.resolve is not a function(…)


2. jQuery-Arbeitscode:

Wenn Sie jQuery verwenden, können wir Folgendes tun:

Code: Select all

// First, create an empty promise:
var dfd = $.Deferred();
var promise = dfd.promise();

// Then, show the dialog:
var $dialog = $('#dialog-confirm').show();

// SUCCESS: jQuery deferred works
$dialog.find('.btn-yes').click(() => { dfd.resolve(); })
$dialog.find('.btn-no').click(() => { dfd.reject(); })
3. Versuchen Sie, eine verzögerte Schnittstelle für es6 zu finden.

Also habe ich nach einer ES6-AUSGABE von verzögert gesucht:

https://github.com/seangenabe/es6-deferred

Aber ich habe immer noch eine Fehlermeldung erhalten:


undefiniert:1 Nicht erfasst (in Versprechen) Objekt {}


Tatsächlich besteht der Code nur darin, die innere Auflösungs-- und Ablehnungsfunktion mithilfe von Schließung nach außen zu halten:

https://github.com/seangenabe/es6-defer ... eferred.js

Die gleiche Strategie, wenn ich das tue:

Code: Select all

let dfd = {};

let $dialog = $('#dialog-confirm').show();

let promise = (function() {
return dfd.promise = new Promise(function(resolve, reject) {
dfd.resolve = resolve;
dfd.reject = reject;
});
})();

// FAIL: still not working.
$dialog.find('.btn-yes').click(() => { dfd.resolve(); })
$dialog.find('.btn-no').click(() => { dfd.reject(); })
Wie kann ich also die Aktion „Entschließen“ und „Ablehnen“ aus meinem Anruf zur Versprechenserstellung herausziehen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post