我正试图通过延迟执行来即兴编写一段代码。
$(document).ready(
function testFunc(){
setTimeout(function(){console.log("something happening...")},1000)
}
$.when(testFunc()).done(function(){
//this code executes immediately, shouldn't it be executed after 1 sec or 1000 milliseconds
$('#tWrapper').removeClass("d-none");
$('#spinnerrr').remove();
});
});
因此,我想在一个函数完成后做一些事情(以我为例,删除一些类或HTML元素)(这将是ajax调用,但是现在我在代码延迟的情况下即兴使用了AJAX调用),但是$ .when()函数内部的函数会立即执行。
答案 0 :(得分:2)
testFunc
必须是一个Promise或一个返回Promise的函数
const testFunc = new Promise(resolve => {
{
console.log("something waiting to happen...")
setTimeout(function () {
console.log("something happening...")
resolve();
}, 1000);
}
})
$.when(testFunc).done(function () {
console.log("something happened...")
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
答案 1 :(得分:0)
最好的方法是在超时结束时执行该函数,除非超时中的某些内容是异步的(那么那应该是您等待的时间!)。
function setData(data) {
console.log("My article is called " + data.title);
console.log("And this is what I wrote: " + data.content);
}
function loadData() {
setTimeout(function () {
console.log("Data loaded.");
setData({ title: 'My first artile', content: '...' });
}, 1000);
}