0
我試圖用承諾來確保某些功能不火,直到另一個函數返回。我已經看了很多的例子,別人的問題等,而據我可以告訴我的語法是正確的,但我.then(function())
將無法運行,所以我必須失去了一些東西。jQuery的承諾沒有。於是觸發()或.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");
});
因爲該方法
previewMaster
沒有返回承諾
'dfd.resolve;'是一個函數...用'dfd.resolve( 「值來解決的承諾,因爲這是承諾做」); ' –
也,你在哪裏返回'dfd.promise()'是完全錯誤的 - 你需要從previewMaster函數返回它,而不是回調到setInterval的 –
@JaromandaX是絕對正確的。文檔:https://api.jquery.com/deferred.resolve/ – YellowShark