输出promise对象而不是结果时的jQuery

时间:2017-11-05 08:12:51

标签: javascript jquery promise pouchdb

我想获得PouchDB中每个数据库的计数。当我试图将它包装在jQuery承诺中时,当它完成时它会将promise对象而不是结果发送给then();

function validateAppData(event) {

        var db1 = new PouchDB( "distributors" );
        var db2 = new PouchDB( "categories" );
        var db3 = new PouchDB( "genericTypes" );
        var db4 = new PouchDB( "products" );

        $.when(
            db1.info(),
            db2.info(),
            db3.info(),
            db4.info()
        ).then( function( distributors, categories, genericTypes, products ) {
            console.log(distributors);
            console.log(categories);
            console.log(genericTypes);
            console.log(products);
            console.log("all done")
            console.log(distributors.doc_count);
        } );
    }

控制台输出如下。

enter image description here

请让我知道如何在每个对象中获得回复。

谢谢。

2 个答案:

答案 0 :(得分:1)

使用Promise.all()。 jQuery延迟对象不一定处理与Promise方法

相同的Promise个对象

答案 1 :(得分:1)

您可以使用Promise.all()来处理多项承诺,只需查看docs

var db1 = new PouchDB("distributors");
var db2 = new PouchDB("categories");
var db3 = new PouchDB("genericTypes");
var db4 = new PouchDB("products");

Promise.all([
  db1.info(),
  db2.info(),
  db3.info(),
  db4.info()
]).then(([ distributors, categories, genericTypes, products ]) => {
  console.log(distributors);
  console.log(categories);
  console.log(genericTypes);
  console.log(products);
  console.log("all done");
  console.log(distributors.doc_count);
});