多线程在phonegap ios和android中的问题

Sen*_*nty 5 javascript multithreading cordova

我创建了这个代码来处理PhoneGap中的线程,但如果我运行此代码,我会收到以下错误.

Thread 14 WebCore: Database: EXC_BAD_ACCESS (code = 1, address = Oxbbadbeef)
Run Code Online (Sandbox Code Playgroud)

我也使用另一个看起来像我上面粘贴的线程,突然我的应用程序崩溃并得到相同的错误消息,我也想使用相同的多线程代码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();
         });
        });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Sid*_*Sid 0

问题可能在于 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);
Run Code Online (Sandbox Code Playgroud)