提供同步函数调用和异步内码的最佳实践

时间:2015-12-07 09:04:47

标签: javascript asynchronous angular-promise synchronous es6-promise

我想在JavaScript中提供一个返回简单字符串的同步帮助函数。在该函数内部,我必须查询一个与promises一起使用的SQLite数据库。 同步异步调用的推荐方法是什么?

function getToken() {
    console.debug("getToken called");

    var deferred = $q.defer();

    var db = sql.getDb();
    db.executeSql('SELECT token from system LIMIT 1', [],
        function(result) {
            if (result.rows.length === 0 || !isTokenFormatValid(result.rows[0].token)) {
                deferred.resolve('');
            } else {
                deferred.resolve(result.rows[0].token);
            }
        }, function(error) {
            console.error();
            deferred.reject(Error('SQL: Not able to query token in system table. ' + error));
        });

    return deferred.promise;
}

辅助功能:

function getTokenHelper() {
    // Todo: return token synchronously
}

处理顺序更复杂,但在本文中简化了。不幸的是,我需要一个同步返回值,因为消费者无法处理承诺。

0 个答案:

没有答案