Как мне отложить обещание ES6, например jquery Deferred?Jquery

Программирование на jquery
Ответить
Anonymous
 Как мне отложить обещание ES6, например jquery Deferred?

Сообщение Anonymous »

1. Использую обещание es6, но синтаксис неверен.

Я использую es6 и хочу создать диалоговое окно отложенного подтверждения:

Код: Выделить всё

// 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(); })
Когда я нажал кнопку, это не удалось, потому что обещание не имеет методов отклонения и разрешения.


Необработанная ошибка типа: обещание.resolve не является функцией(…)


2. Рабочий код jQuery:

При использовании jQuery мы можем сделать следующее:

Код: Выделить всё

// 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. Попробуйте найти отложенный интерфейс для es6.

Поэтому я искал ES6 EDITION deferred:

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

Но все равно получил ошибку:


undefined: 1 Неперехваченный (в обещании) объект {}


Фактически, код просто сохраняет внутреннее разрешение и функцию отклонения снаружи с помощью замыкания:

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

Та же стратегия, если я это сделаю:

Код: Выделить всё

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(); })
Итак, как я могу извлечь действия разрешения и отклонения из моего вызова создания обещания?

Подробнее здесь: https://stackoverflow.com/questions/384 ... y-deferred
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»