1

誰でもこのコードの間違いを見ることができますか? 私はこのアプローチをアプリケーション全体でほぼ同じように使用していますが、何らかの理由で、主な約束「a」を解決できないようです。

   Parser.prototype.insertSomeData = function(data)
    {
        var a = $.Deferred(),
            table = "Example",
            columns = ["col1", "col2", "col3"];

        var deferreds = [];

        // insert Data into the database
        for (var i = 0; i < data.length; i++)
        {
            var dfd = $.Deferred();

            deferreds.push(dfd.promise());

            item = data[i];

            database.insert(table, columns, [item.one, item.two, item.three], function(){console.log("resolved"); dfd.resolve()}, dfd.reject);
        }
        $.when.apply(null, deferreds).then(function(){console.log("it worked!"); a.resolve()});

        return a.promise();
    }

遅延配列の両方の約束が解決されます。whenだから私は問題があると思う

4

2 に答える 2

2
  1. コーディングdfd.resolveしましたが、これは関数を取得するだけではありません。あなたはそれを呼び出す必要があります: dfd.resolve().
  2. aすべての deferred が終了したら、おそらくではなくを解決したいと思うでしょうdfd。が終了する$.whenと、すべてdfdの s が解決されますa。この場合、おそらく master deferred ( ) を解決する必要があります。
于 2012-08-23T09:36:14.220 に答える
0

deferredsオブジェクトからの promise のみが含まれてdfdいるため、それらが解決されるものです。

于 2012-08-23T09:32:13.763 に答える