Javascript phonegap ios和android中的多线程问题
我创建这段代码是为了处理PhoneGap中的线程,但是如果我运行这段代码,我会得到以下错误Javascript phonegap ios和android中的多线程问题,javascript,multithreading,cordova,Javascript,Multithreading,Cordova,我创建这段代码是为了处理PhoneGap中的线程,但是如果我运行这段代码,我会得到以下错误 Thread 14 WebCore: Database: EXC_BAD_ACCESS (code = 1, address = Oxbbadbeef) 我也在使用另一个线程,它看起来像我上面粘贴的线程,突然我的应用程序崩溃,并收到相同的错误消息,我也想在android和Ios上使用相同的多线程代码。有人能给我建议一种更好的方法,在android和Ios上重复使用相同的代码吗 那么,我在这件事上遗漏了什
Thread 14 WebCore: Database: EXC_BAD_ACCESS (code = 1, address = Oxbbadbeef)
我也在使用另一个线程,它看起来像我上面粘贴的线程,突然我的应用程序崩溃,并收到相同的错误消息,我也想在android和Ios上使用相同的多线程代码。有人能给我建议一种更好的方法,在android和Ios上重复使用相同的代码吗
那么,我在这件事上遗漏了什么,我该如何弥补呢
这是我的密码:
function itmerStart()
{
if (timerId) return
timerId = setInterval(loadMessageListCron, 20000);
function loadMessageListCron()
{
var userid = window.localStorage.getItem("userId");
if(userid != undefined)
{
alert("thread calling..");
$.ajax("//abc.com/Rest/get_all_messages?UserId="+ userid).done(function(data)
{
var i, response;
$.each(data.messages, function (i, response)
{
inboxMessageItmerStop(); insertMessages(response, i);
inboxMessageItmerStart();
});
});
}
}
}
问题可能是loadMessageListCron函数在再次调用时仍在运行。请尝试以下内容:
var delay = (function()
{
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
function loadMessageListCron()
{
var userid = window.localStorage.getItem("userId");
if(userid != undefined)
{
alert("thread calling..");
$.ajax("//abc.com/Rest/get_all_messages?UserId="+ userid).done(function(data)
{
var i, response;
$.each(data.messages, function (i, response)
{
});
});
}
}
setInterval(function(){
var pause = 1000;
delay(function() {
loadMessageListCron();
}, pause );
}, 20000);
我不太确定多线程或javascript是否与您的问题有关。这看起来像是错误访问导致的内核恐慌。您可能正试图向目标C中的解除分配对象发送消息,或者以线程不安全的方式访问资源。你能发布本机代码吗?就像@Lorenzo评论的那样,这看起来不像是多线程问题。setIntrval在JavaScript中不是真正的多线程。不确定cordova是否实现了这一点,但要在JavaScript中获得真正的多线程,请查看。