如何使用“.each”方法生成的数据结果?

时间:2017-02-27 10:31:26

标签: scope dexie

我使用Dexie.jsIndexedDb wapper)。

我尝试过像这样生成HTML:

function getList(where){
    var html = [];
    if($.isEmptyObject(where)) return;
    db.modules.where(where).each(function(item){
        html.push('<div class="module-item">');
        html.push('<div class="module-item-pic"><img src="' + item.modu_pic + '" class="img-fluid" /></div>');
        ....
        html.push('</div>')
        html.push('</div>');
    })
    console.log(html.join(''));
}

但上面的代码没有输出任何内容。

但是,当我将console.log(html.join(''))放回到.each的回调中时,我会得到一个输出:

function getList(where){
    var html = [];
    if($.isEmptyObject(where)) return;
    db.modules.where(where).each(function(item){
        html.push('<div class="module-item">');
        html.push('<div class="module-item-pic"><img src="' + item.modu_pic + '" class="img-fluid" /></div>');
        ....
        html.push('</div>')
        html.push('</div>');
console.log(html.join(''));
    })

}

为什么我的第一个代码段无法显示任何输出?

1 个答案:

答案 0 :(得分:0)

请记住,Dexie操作通常是异步的。问题是,在完成任何异步操作之前,您的第一个代码段会立即执行"Welcome to mex -setup. This utility will help you set up etc"

您需要使用.each返回的promise,等待所有迭代完成后再尝试输出到控制台:

console.log(html.join(''))