我正在尝试编写在滚动时从服务器获取数据的函数。我将不得不写一个像这样的函数......
function onscrollend()
{
$.ajax({
});
}
我现在对如何检查正在进行的旧.ajax()
通话感到困惑。这样我就可以取消新的了。我很困惑因为每次调用该函数时如何检查以前的调用状态..我可以访问上一次调用的变量吗?
答案 0 :(得分:1)
$.ajax()
返回promise,其中公开readyState
属性,因此您只需将$.ajax()
调用的返回值分配给变量并检查其{{1} }}
readyState
然后只有在前一个调用完成后才会触发ajax调用(var xhr = {};
function onscrollend() {
if(xhr.readyState === 4) {
xhr = $.ajax({
// ..
});
}
}
)。
答案 1 :(得分:1)
你可以像这样设置一个标志:
private async Task Test() {
const string applicationURL = @"https://xxxx.azure-mobile.net/";
const string applicationKey = @"xxxx";
CurrentPlatform.Init();
var client = new MobileServiceClient(applicationURL, applicationKey);
string path = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "store.db");
if (!File.Exists(path)) {
File.Create(path).Dispose();
}
var store = new MobileServiceSQLiteStore(path);
store.DefineTable<Product>();
await client.SyncContext.InitializeAsync(store);
var productTable = client.GetSyncTable<Product>();
try {
await client.SyncContext.PushAsync();
await productTable.PullAsync("allProducts", productTable.CreateQuery());
var t = await productTable.ToListAsync();
Console.WriteLine("Product Count : " + t.Count);
}
catch (Java.Net.MalformedURLException ex) {
Console.WriteLine(ex.Message);
}
catch (Exception e) {
Console.WriteLine(e.Message);
}
}