【发布时间】:2015-05-20 08:14:53
【问题描述】:
我知道这个标题有点拗口,但老实说,我无法为我的具体情况想出更好的标题(欢迎提出建议)。
所以基本上我记下了this JSFiddle(简化版)我面临的问题。我正在使用 AngularJS 的 $q.all 方法来收集一组依赖于查询结果的 Promise:
db.transaction(function(tx) {
$q.all(fn(tx)).then(function(a) {
console.log("Result:", a);
});
});
其中fn 是一个返回承诺数组的函数。
在上述情况下,一切都按预期工作,结果(解析承诺的 sql 查询结果数组)是 console.logged 正确。
但是,如果我将$q.all 包装在另一个延迟对象的then 方法中,如下所示:
db.transaction(function(tx) {
fn2(tx).then(function(tx) {
$q.all(fn(tx)).then(function(a) {
console.log("Result:", a);
});
});
});
我收到错误:Error: Failed to execute 'executeSql' on 'SQLTransaction': SQL execution is disallowed.
(fn2 是一个仅返回一个解析为 tx 对象本身的承诺的函数。
我是否偶然发现了一个常见的陷阱?我搜索了一下,但没有找到任何东西。干杯。
【问题讨论】:
标签: javascript angularjs promise web-sql