如何防止 ASP.net PageMethod 调用阻塞其他 javascript 函数调用
HOW to prevent an ASP.net PageMethod call from blocking other javascript function calls
下面的 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 或本机 XmlHttpRequest.
手动调用它。
异步=真;
如果您进行多次调用,ASP.NET 会话可能会阻塞。在 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 会话设置为只读删除了将同步线程的独占会话锁
下面的 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 或本机 XmlHttpRequest.
手动调用它。异步=真;
如果您进行多次调用,ASP.NET 会话可能会阻塞。在 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 会话设置为只读删除了将同步线程的独占会话锁