javascript - $.当 promise 解决得太早时

标签 javascript jquery promise localforage

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

更新: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 本身返回一个 promise 。在填充 promises 数组之前,您需要等待。

fiddle

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!')
    })
});

关于javascript - $.当 promise 解决得太早时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27798740/

相关文章:

javascript - 如何在图像上创建蒙版(不是剪辑路径,而是相反)

javascript - 动态创建 jquery-ui 可拖动句柄

javascript - 我应该在 ES6 Node 项目中使用多少 promise ?

javascript - 带有两个参数的“数据”回调不会将 buffer.toString() 打印为字符串

javascript - 如何为响应式布局同步 CSS 和 JavaScript? (变量和@media)

javascript - 获取div在页面滚动上的位置

javascript - 如何使用 promises 和 node.js 正确检查和记录 http 状态代码?

javascript - 解决嵌套 Promise 后运行函数

javascript - HighChart 使用小数据集呈现空白

javascript - 如何触发超链接点击事件-React组件