// 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(); })
< /code>
Когда я нажимал кнопку, она не удалась, потому что обещание не имеет отклонений < /code> и resolve < /code>. < /p>
uncaught typeerror: rape.Resolve не является функцией (…) < /p>
< /blockquote>
. jQuery Рабочий код: < /h3>
При использовании jQuery мы можем сделать ниже: < /p>
// 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(); })
< /code>
3. Попробуйте найти отложенный интерфейс для ES6.
Итак, я искал издание [b] es6 [/b] отложенного:
https://github.com/seangenabe/es6-deferred>
perrishrishrishred>
perrishrishred>
perrishredhiced />
Неопределенный: 1 uncaught (в перспективе) объект {} < /p>
< /blockquote>
Фактически, код просто сохраняет функцию внутренней решимости < /code> и повторно < /code> с использованием закрытия: < /p>
. />https://github.com/seangenabe/es6-deferred/blob/master/deferred.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(); })
Итак, как я могу вытащить разрешение и отклонить действие из моего вызова для создания обещания?