gpt4 book ai didi

javascript - 关于 AngularJS 延迟解析位置

转载 作者:行者123 更新时间:2023-12-03 10:10:33 25 4
gpt4 key购买 nike

我有一个数据应该保持一致性。但我有一个每个循环。我不确定我放置的 resolvereject 位置是否正确。这是我的示例代码。

function getCount(content) {
var deferred = $q.defer();

db.transaction(function(tx){
tx.executeSql(
query,
[data],
function(tx, res) {
var count = res.rows.item(0).cnt;

if (count === 0) {
var commit = content.commit;

commit.forEach(function(entry) {
tx.executeSql(
query,
[data],
function(tx, res){
deferred.resolve(res); // here is right?
},
function (e) {
deferred.reject(e); // here is right?
}
);
});
}
else{
deferred.resolve(res);
}
},
function (e) {
deferred.reject(e);
}
);
});
}

而且我认为 resolvereject 应该调用一次,而不是在每个循环上调用,所以我修改为这个版本,对吗?感谢您的帮助。

function getCount(content) {
var deferred = $q.defer();

db.transaction(function(tx){
tx.executeSql(
query,
[data],
function(tx, res) {
var count = res.rows.item(0).cnt;

if (count === 0) {
var commit = content.commit;
var status = true;
commit.forEach(function(entry) {
tx.executeSql(
query,
[data],
function(tx, res){},
function (e) {
status = false;
}
);
});

// here is right?
if (status) {
deferred.resolve(res);
}
else {
deferred.reject();
}
}
else{
deferred.resolve(res);
}
},
function (e) {
deferred.reject(e);
}
);
});
}

----------编辑-------------

检查每个循环

function getCount(content) {
var deferred = $q.defer();

db.transaction(function(tx){
tx.executeSql(
query,
[data],
function(tx, res) {
var count = res.rows.item(0).cnt;

if (count === 0) {
var commit = content.commit;
var commit_index = 0;

commit.forEach(function(entry, index) {
tx.executeSql(
query,
[data],
function(tx, res){
commit_index++;
},
function (e) {}
);

if (index === (commit.length - 1)) {
if (commit_index === commit.length) {
deferred.resolve(res);
}
else {
deferred.reject(res);
}
}

});
}
else{
deferred.resolve(res);
}
},
function (e) {
deferred.reject(e);
}
);
});
}

最佳答案

是的,resolve和reject应该调用一次,fo​​rEach循环是aync形式的循环。所以你无法检查

 ` if (status) {
deferred.resolve(res);
}
else {
deferred.reject();
}`

所以你必须在每个循环中解决或拒绝,但当最后一次迭代到来时。当提交长度等于indexOf条目时,您可以检查每个循环中的最后一次迭代。

关于javascript - 关于 AngularJS 延迟解析位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30134346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com