ImAngela
ImAngela
  • 发布:2015-12-21 14:43
  • 更新:2015-12-21 16:41
  • 阅读:1826

【报Bug】mui.ajax 等待服务器 response时app死机问题

分类:MUI

当App通过mui.ajax执行异步(或同步)post, 如果网络质量非常差, 或者服务器端lock住了某个节点. 造成app无法正常接收server端的response, 这时app就会出现死机, 点击界面上的任何操作都没有反应, 程序也不能正常退出. 只有当app完整收到服务器的response后, app才会复苏. 这个问题要怎么解决?

2015-12-21 14:43 负责人:无 分享
已邀请:
小微

小微

ajax超时会进入error中,可以在error中进行处理
类似这样
error:function(xhr,type,errorThrown){
if(type=="timeout")

  • ImAngela (作者)

    加入这段代码后, 异步的问题解决了, 但是同步的时候依然存在相同的问题.没有server的response, app就如死机一般, 没有任何反应, 也无法退出.

    2015-12-21 15:26

小微

小微

timeout:10000,//超时时间设置为10秒;
在ajax中加入上面这个

ImAngela

ImAngela (作者)

我的代码如下:
mui.ajax(url, {
data: dataObject,
dataType: 'json',
timeout: 3000,
async: false,
success: successCallback,
error: function(xhr, type, errorThrown) {
if(type=="timeout"){
//异常处理;
var floatw = null;
if (floatw) { // 避免快速多次点击创建多个窗口
return;
}
floatw = plus.webview.create("/ServerError.html", "/ServerError.html", subpage_style);
floatw.show();
plus.nativeUI.closeWaiting();
floatw.addEventListener("close", function() {
floatw = null;
plus.nativeUI.showWaiting();
customGetJson(url, dataObject, successCallback);
plus.nativeUI.closeWaiting();
}, false);
}
}
});

小微

小微

前端同步和异步的区别就在于等待响应的处理。如果服务器响应很慢,而且你是同步的话,肯定是卡死的。

ImAngela

ImAngela (作者)

@小微
我觉得虽然是同步, 但是设置了timeout的时间, 超过时间就应该返回error.

该问题目前已经被锁定, 无法添加新回复