2

なぜ $.when の解決が早すぎるのか疑問に思っています。他のすべての約束が解決されたときにのみ解決する必要があります。何か不足していますか?

更新: http://jsfiddle.net/7hdx5j6z/6/

  var promises = []

  localforage.iterate(function(value, key) {
    if ( key.indexOf('params_') === -1 ) {
      promises.push(localforage.removeItem(key))
      console.log(promises)
    }
  })

  $.when.apply($, promises).then(function() {
    console.log('all done!')
  })
4

1 に答える 1

2

iterateそれ自体が promise を返します。promisesアレイが設定される前に、それを待つ必要があります。

フィドル

var promises = []

var x = localforage.iterate(function (value, key) {
    if (key.indexOf('params_') === -1) {
        var promise = localforage.removeItem(key)
        promises.push(promise)
        console.log(promise)
    }
})

console.log("x", x);
x.then(function () {
    $.when.apply($, promises).then(function () {
        console.log('all done!')
    })
});
于 2015-01-06T13:04:40.503 に答える