JavaScript - 当错误调用另一个函数时,函数不会抛出错误

时间:2015-05-20 11:02:30

标签: javascript database cordova web-sql

我吓坏了......我无法弄清楚,为什么这不起作用:

function errorHandler(transaction, error){
    alert('Error: ' + error.message);
}
function openDb7(){
    var db = window.openDatabase("Database", "1.0", "Cordova login", 300000);
    db.transaction(insert7, errorHandler);

因此永远不会调用errorHandler函数。但是,如果我在其中放置一个警报而不是函数调用,它的工作 - 它看起来像这样:

function errorHandler(transaction, error){
    alert('Error: ' + error.message);
}
function openDb7(){
    var db = window.openDatabase("Database", "1.0", "Cordova login", 300000);
    db.transaction(insert7, alert('error inside it'));

也许有人知道,我的错误在哪里。

3 个答案:

答案 0 :(得分:1)

alert('error inside it')会立即被调用,而不是作为回调。

如果你想使用alert作为你的回调函数的等效函数,你需要将它包装在一个匿名函数中:

db.transaction(insert7, function() {
  alert('error inside it') 
});

答案 1 :(得分:1)

此代码

db.transaction(insert7, alert('error inside it'));

并不意味着错误发生...它正在执行警报,以便返回的值应传递给transaction函数,而不是尝试

db.transaction(insert7, function () { 
    alert('error inside it')
});

如果警报未弹出,则表示永远不会调用您的回调

答案 2 :(得分:1)

你的" error"功能中的对象" errorHandler"没有" message"属性。