如何避免从查询中读取行时超时(Phonegap + Javascript)



我正在尝试在字符串中插入大约 58000 行查询。但是在 8000 左右的行之后,我得到一个超时错误。

我已经尝试使用SetTimeout功能,但它没有用。

检查我正在处理的代码:

function onQuerySuccess(tx, results) {
  console.log("Entering onQuerySuccess");
  if(results.rows) {
    console.log("Rows: " + results.rows.length);
    var len = results.rows.length;
    if(len > 0) {
    store_html(results, 0);
    console.log("Finished Reading Rows: " + len);       
    saveNotes();
    console.log("Finished Saving Notes");
} else {
  //This should never happen
  console.log("No rows.");
    }
  } else {    
        alert("No records match selection criteria.");
      }
      console.log("Leaving openView");
function store_html(results, rows_complete){
   rows_complete=store_html_input(results, rows_complete);
   console.log("Returning row:" + rows_complete);
   if (rows_complete<results.rows.length)
   {
      setTimeout(store_html(results, rows_complete), 50);
   }
}
function store_html_input(results, rows_complete){
  for(var i = rows_complete; i < rows_complete+100; i++) {
            gpsTextFile = gpsTextFile + results.rows.item(i).section + ' ' +     results.rows.item(i).timestamp + ' ' +                             results.rows.item(i).latitude + ' ' +
            results.rows.item(i).longitude + ' ' + results.rows.item(i).acx + ' ' +     results.rows.item(i).acy + ' ' +
            results.rows.item(i).acz + ' ' + results.rows.item(i).speed;
            gpsTextFile = gpsTextFile + "nr";
  }
  return i;
}

所以。。我得到"Javascript执行超过超时"。

感谢您的任何帮助!

此致敬意。

您需要

更改setTimeout()以不立即执行该函数。 从此更改:

setTimeout(store_html(results, rows_complete), 50);

对此:

setTimeout(function() {store_html(results, rows_complete)}, 50);

就像你之前一样,它立即执行store_html(results, rows_complete)并将返回值从该值传递给'setTimeout(),这不会延迟任何东西。 这是一个常见的错误(我今天回答的第二个问题)。

相关内容

  • 没有找到相关文章

最新更新