Я пытаюсь использовать обещание удостовериться, что некоторая функция не срабатывает, пока не вернется другая функция. Я рассмотрел множество примеров, проблемы других и т. Д., И насколько я могу сказать, что мой синтаксис верен, но мой .then(function())
не запускается, поэтому мне что-то не хватает.jQuery Promise не запускает .then() или .done()
function previewMaster() {
var dfd = $.Deferred();
function prevAndTest() {
return true;
}
var doneYet = false;
var intvl = setInterval(function() {
if (doneYet === false) {
doneYet = prevAndTest();
//reassign doneYet until true
} else {
clearInterval(intvl);
dfd.resolve;
return dfd.promise();
}
}, 1000);
}
ни .then()
, ни .done()
работа здесь:
var promise = previewMaster();
promise.then(function() {
alert("finished");
});
'dfd.resolve;' функция ... использовать 'dfd.resolve ("значение для разрешения обещания, потому что это то, что делает обещание"); ' –
также, где вы возвращаете' dfd.promise() 'совершенно неправильно - вам нужно вернуть его из функции previewMaster, а не обратный вызов setInterval –
@JaromandaX абсолютно прав. Документы: https://api.jquery.com/deferred.resolve/ – YellowShark