stevewuxl
stevewuxl
  • 发布:2016-01-04 11:47
  • 更新:2016-04-30 10:17
  • 阅读:2243

很隐蔽的bug,关键字:ISO,plus.io.resolveLocalFileSystemURL,嵌套

分类:HTML5+
iOS

在IOS递归调用resolveLocalFileSystemURL来判断文件是否存在时,根本不进resolveLocalFileSystemURL回调方法(成功、失败都不进),该怎么解决呢:
递归方法:
var iteCount = 0;
function iteratorFun(data){
while(iteCount < data.length){
var sender = "";
var content
="";
if(data[iteCount].SENDER == loginName){
sender = "self";
content
= data[iteCount].CONTENT;
}else{
sender = data[iteCount].SENDER;
content
= data[iteCount].SENDER+":"+data[iteCount].CONTENT;
}
var msg = {
sender:sender,
type: data[iteCount].SENDTYPE,
content: content

};

    if(""+msg.type != "text"){  
        judFile(msg,"load","yes",data);  
    }else{  
        record.unshift(msg);  
        iteCount++;  
    }  
}  
if(iteCount == data.length){  
    bindMsgList();  
    difHeight();  
}  

}
判断方法:
//判断文件是否存在
function judFile(msg,type,isIterator,data){
var furl = msg.content;
//需要截取文件名
if(furl.indexOf("/") != -1)
furl = furl.substring(furl.lastIndexOf("/")+1,furl.length);
var judurl = "doc";
var type
= msg.type;
if(type == "sound")
judurl += "/audio/"+furl;
else{
judurl += "/"+furl;
}
plus.io.resolveLocalFileSystemURL(judurl, function(entry ){
alert("aaaaaaaaaaaa");
if(type
== "sound")
msg.content = judurl;
else{
var path=plus.io.convertLocalFileSystemURL(judurl);
path = "file://"+path;
msg.content = path;
}

    if(type == "load"){  
        record.unshift(msg);//数据装载  
    }else  
        record.push(msg);  
    alert(isIterator);  
    if(isIterator == "yes"){//进行递归  
        alert("来到了这里!");  
        iteCount++;  
        alert(iteCount);  
        iteratorFun(data);  
    }else{  
        bindMsgList();  
        difHeight();  
    }  
}, function(error){  
    alert("文件不存在!");  
    //文件不存在,下载  
    downFile(msg,type,isIterator,data);  
} );  

}

2016-01-04 11:47 负责人:无 分享
已邀请:
DCloud_IOS_XTY

DCloud_IOS_XTY

经测试未发现有该问题,请提供可以重现问题的demo

  • stevewuxl (作者)

    IOS9+上都没重现到么?

    2016-01-04 14:36

stevewuxl

stevewuxl (作者)

测试手机为IOS9

stevewuxl

stevewuxl (作者)

提供demo有点难为啊

stevewuxl

stevewuxl (作者)

DCloud_IOS_XTY

DCloud_IOS_XTY

写个简单的页面也可以,只要可以复现问题

  • stevewuxl (作者)

    上传了一个简单的界面,不知能否重现;如果再需要详细的,我只有上传整个架构包了。这有点麻烦了。

    2016-01-04 15:30

stevewuxl

stevewuxl (作者)

demo里面引用的资源文件为,就是mui和H5+的这些公共文件

DCloud_IOS_XTY

DCloud_IOS_XTY

你发的demo逻辑上貌似有点问题,resolveLocalFileSystemURL为异步执行,理论上while会陷入死循环

  • stevewuxl (作者)

    android不出现

    ios才出现。

    需要怎么改,求指导。

    2016-01-04 16:20

  • stevewuxl (作者)

    主要im功能需要取历史数据,那么取出的历史数据,需要取判断终端是否存在图片或音频文件;异步的话难得一条一条去请求么?求指导。

    2016-01-04 16:30

  • stevewuxl (作者)

    另外,主要是不进成功与失败的回调

    2016-01-04 16:39

stevewuxl

stevewuxl (作者)

已解决,谢谢各位!

  • taoguoer

    怎么解决的啊?留下解决方法吧

    2017-01-10 14:54

  • 1***@qq.com

    怎么解决的

    2018-04-25 15:49

动软网络

动软网络

您好,您是怎解决判断本文件是否存在的 ,我的qq是1965786801,能留下您的qq吗

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