$.当承诺解决得太早时

$.when promise is resolving too early

本文关键字:太早 解决 承诺      更新时间:2023-09-26

我想知道为什么$.什么时候解决得太早了?只有在所有其他承诺都得到解决时,我才需要它来解决。我错过了什么吗?

更新: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!')
  })

iterate本身返回一个承诺。 在填充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!')
    })
});