将数据传递到JavaScript承诺中

将数据传递到JavaScript承诺中,javascript,jquery,promise,indexeddb,Javascript,Jquery,Promise,Indexeddb,我使用jQuery插件jQuery indexeddb来处理indexeddb 我当前的问题是,我想向objectStore添加一个对象,但前提是该对象不存在于另一个特定的objectStore中 目前我正在使用下面的代码,但问题是.add函数为对象已经存在的每个调用提供了一个异常,这意味着我在for循环的每个过程的承诺之外生成的order对象保持不变 我能做些什么来解决这个问题 更新 function fillStoreWithJson(data, store) { var promises

我使用jQuery插件jQuery indexeddb来处理indexeddb

我当前的问题是,我想向objectStore添加一个对象,但前提是该对象不存在于另一个特定的objectStore中

目前我正在使用下面的代码,但问题是.add函数为对象已经存在的每个调用提供了一个异常,这意味着我在for循环的每个过程的承诺之外生成的order对象保持不变

我能做些什么来解决这个问题

更新

function fillStoreWithJson(data, store) {
var promises = [];
$.each(data,function (index,element) {
    store.add(element);
    orderIsFinished(element["AUFTRAGNR"]).done(function (result) {
        if (result === false) {
            var def = new $.Deferred();
            store.add(element).done(function (result, event) {
                def.resolve(result);                
            });
            promises.push(def);
        }
    });
});
return $.when.apply(undefined, promises).promise();
然后这样做:

fillStoreWithJson(orderJson, orderObjectStore).done(function() {
            showOrderList();
        });

add
用于添加新记录。使用
put
创建新记录或更新记录。

能否显示确切的
orderIsFinished
功能?它目前缺少一个结束符
}
,而且在执行
返回后调用
promise.fail(…)
也不太令人放心。另外,什么是
getFinishedOrders
,它的结果是什么
.get()
方法?错误到底是什么,它是在哪里创建的?您显示的代码不够,我不理解您所说的“这意味着order对象保持不变”是什么意思。也许你想给我们看看这些对象的生成代码?另外,预期的结果是什么,它们应该有什么不同?嘿@Bergi,很抱歉回答得太晚了。我已经纠正了上面的oderIsFinishedMethod。get()方法返回一个promise对象,其中包含一个事件,说明操作是成功还是失败。错误是,内部orderIsFinished(order[“AUFTRAGNR”]),然后是(函数(结果){order对象保持不变,例如,我的数据数组中有5个订单,但在for循环中,我得到了5倍相同的订单,因此它试图将5倍相同的订单添加到数据库中,这是不可能的。这很难解释,我不知道为什么会这样。哦,我现在明白了问题所在,你忘记使用闭包并继续请在所有回调中引用相同的
order
变量。重复的变量有很多示例。我个人建议使用迭代器方法,如
.map
.forEach
$。每个