0
我需要从IndexedDB中检索多个值,检查它们是否都满足某些约束(对于所有这些约束都不相同),如果是这样,则调用一个函数。为了更好地说明这一点,设想对IndexedDB的调用是同步的,我们会有类似的东西。检查从索引数据库异步检索的几个值
function myFunc(varNames, conditions) {
for(var i = 0; i < varNames.length; i++) {
if(!isGood(db.get(varNames[i]), conditions[i])) {
return;
}
}
doStuff();
}
由于IndexedDB是异步的,我不知道该怎么做。因为doStuff
的调用取决于所有获取,所以在每次获取中使用回调并不可行。将结果累积到全局变量中将不起作用,因为myFunc
被称为多个变量。我试过类似的东西:
function myFunc(varNames, conditions) {
var valid = 0;
checker() {
valid++;
if(valid == varNames.length) {
doStuff();
}
}
for(var i = 0; i < varNames.length; i++) {
db.get(varNames[i], function(val) {
if(isGood(val, conditions[i]) {
checker();
}
});
}
}
但这似乎并不奏效。有任何想法吗?
见(http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an- [如何返回从AJAX调用的响应?] ajax-call)的想法。 tl; dr:使用承诺。 –
你的函数声明必须以'function'作为前缀,否则你会得到一个语法错误。 – levi