gpt4 book ai didi

javascript - 如何防止 ASP.net PageMethod 调用阻止其他 javascript 函数调用

转载 作者:行者123 更新时间:2023-12-03 06:38:20 26 4
gpt4 key购买 nike

下面的 JavaScript 函数每 15 秒运行一次并调用 ASP.Net 页面方法。大约需要 4 - 8 秒才能完成。

同一页面上还有另一个 JavaScript 函数,该函数每 2 秒运行一次,但会定期被之前的方法阻止,需要更长的时间才能完成。

function get_case_list_data(count, max_id) {
PageMethods.GetCaseList(count, max_id, uid, is_agent, got_case_list_data, OnFailure);
}

请问我们如何防止 ASP.Net 页面方法调用阻止同一页面上其他 JavaScript 函数的执行?

最佳答案

使用浏览器调试工具并检查 PageMethods.GetCaseList 中使用的自动生成的代码,然后使用异步 ajax 调用而不是阻塞调用来模拟调用。

PageMethods 包装器只是为了方便,但该代码通常相当难看。您始终可以使用 $.ajax 或 native XmlHttpRequest 手动调用它。

异步=真;

如果您进行多次调用,则 ASP.NET session 可能会阻塞。在 javascript 方法中使用警报或 console.log 来确定阻止的内容

function get_case_list_data(count, max_id) {
console.log("before call");
PageMethods.GetCaseList(count, max_id, uid, is_agent, got_case_list_data, OnFailure);
console.log("after call");
}

function got_case_list_data(){
console.log("in PageMethod success");
// -- updated --
// this could be blocking the call to/from other 2 second timer
// JS is single thread, so window.timeout and ajax callbacks will
// wait until the function is exited
// -- end update--
console.log("end of PageMethod success");
}

--更新--

将 ASP.NET session 设置为只读会删除同步线程的独占 session 锁

关于javascript - 如何防止 ASP.net PageMethod 调用阻止其他 javascript 函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38088407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com