使用的库:Q
和underscore
。
这是我的代码中的以下场景。
pollEngine : _.throttle(function() {
return that.fetchStatus()
.then(function(data) {
if(data) {
//keep polling until the data returned is false
return that.pollEngine();
}
else {
return;
}
});
}, 1000);
fetchStatus: function() {
var deferred = Q.defer();
$.ajax({
//code
success: function(data) {
deferred.resolve('true' or 'false' depending on data);
}
error: function() {
deferred.reject('error');
}
});
return deferred.promise;
}
此代码立即执行第一次,如果返回的数据为true,则由于节流,后续的ajax调用每隔1秒进行一次。
由于服务器数据可能没有准备好,我想第一次将ajax调用延迟几毫秒。但无论我尝试使用delay
,throttle
等代码,fetchStatus
函数和随后的ajax调用都会立即执行。