我使用Dexie.js(IndexedDb
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(''));
})
}
为什么我的第一个代码段无法显示任何输出?
答案 0 :(得分:0)
请记住,Dexie操作通常是异步的。问题是,在完成任何异步操作之前,您的第一个代码段会立即执行"Welcome to mex -setup. This utility will help you set up etc"
。
您需要使用.each
返回的promise,等待所有迭代完成后再尝试输出到控制台:
console.log(html.join(''))