Javascript Promise 未定义

标签 javascript angularjs ionic-framework callback promise

我是 Javascript 和 AngularJS 的新手,我正在尝试解决这个问题。 我制作了一个执行数据库查询并返回 promise 的 Angular 服务。

        executeStatement = function(db, sql, values, onsuccess, onerror) {
        if (!!db.executeSql) {
            return db.executeSql(sql, values || [], onsuccess, onerror);
        } else {
            return db.transaction(function(tx) {
                return tx.executeSql(sql, values, function(ignored, rs) {
                    return onsuccess(rs);
                }, function(ignored, error) {
                    return onerror(error);
                });
            });
        }
    };

    this.executeStatement = function(sql, values) {
        $ionicPlatform.ready( function() {
            return new Promise(function(resolve, reject) {
                return executeStatement(myDB, sql, values, resolve, reject);
            });
        } );
    }

然后如果我在 Angular 服务模块中像这样调用executeStatement。

    this.extract = function(callback) {
        _DB.executeStatement('SELECT * FROM FRIDGE', []).then(callback);}

函数运行完成后不应该返回一个 promise 吗? 我变得不确定:( 一些帮助将不胜感激!

最佳答案

this.executeStatement()函数需要返回$ionicPlatform.ready()的结果:

this.executeStatement = function(sql, values) {
    return $ionicPlatform.ready( function() {
        return new Promise(function(resolve, reject) {
            return executeStatement(myDB, sql, values, resolve, reject);
        });
    } );
}

现在您可以在回调中访问从 executeStatement 返回的任何内容,您可以将其作为参数传递给 .then() 函数:

_DB.executeStatement('SELECT * FROM FRIDGE', []).then(callback);

关于Javascript Promise 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43311119/

相关文章:

javascript - JQuery ("button").click 不起作用

javascript - include() 函数在比较数组中的值时随机工作

javascript - React 不会将特定值传递给 "props"

javascript - 如何使用 Swig 将 JavaScript 中的关联数组映射到 C++ 中的字符串映射?

javascript - 如何在范围更改时显示模板 [Angular 指令]

javascript - Angular 排序和计数,Dragula

angularjs - 在 Ionic、ngCordova (AngularJS) 的 Ionic Sqlite 中调用主 Controller 之前打开数据库?

javascript - 如何从javascript中的列表中删除一行

android - ionic 闪屏尺寸

angularjs - Grunt 错误找不到模块 'win-spawn'