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