1

我正在尝试从这样的数据库中获取值

var batsmanId = getBatsmanid(localStorage.getItem('batsmanOne'));

这是方法定义:

function getBatsmanid(name){
 var id;
 db.transaction(function(tx) {
      tx.executeSql('SELECT * FROM player where player_name = ?',[name], function(tx, results) {
       id = results.rows.item(0).player_id;
       console.log('Batsman ID: '+id);
      });
     });        
     return id;
}

执行时,该方法不会返回id变量batsmanId,而该值显示在控制台中。

我的感觉是数据库操作需要时间来执行

请分享你的想法。

4

1 回答 1

1

你的感觉是对的。

在 Javascript 中,您不能(不应该)“等待”某事发生,而使用的模型恰恰相反,更像是“完成后给我打电话”。

传递给executeSQL它的用于提取数据的函数将在稍后被调用,并且您应该围绕这种方法重新设计您的界面(也就是说,一旦它到达,而不是仅仅设置变量id执行所需的其余处理)。id

于 2013-09-03T12:00:11.593 回答