javascript - 在函数完成之前返回函数结果?
问题描述
从 Firebase 数据库获取一些数据并将其返回到页面上时,我遇到了一些问题。
这是数据检索功能:
let appData = function() {
let read = async function (dataset) {
let dataReference;
dataReference = firebase.database().ref(dataset + '/');
let itemDataArray = [];
dataReference.orderByChild('created').limitToLast(100).on('value', function (response) {
response.forEach(function (element) {
let itemData = element.val();
if (dataset == 'blog') {
itemDataArray.push({
id: element.key,
author: itemData.author,
content: itemData.content,
created: itemData.created,
target: itemData.target || '_top',
title: itemData.title,
url: itemData.url
});
}
else if (dataset == 'pages')
{
itemDataArray.push({
id: element.key,
content: itemData.content,
created: itemData.created,
deprecated: itemData.deprecated || false,
menuText: itemData.menuText,
modified: itemData.modified,
parent: itemData.parent,
path: itemData.path || '/',
repo: itemData.repo,
sortOrder: itemData.sortOrder || 0,
target: itemData.target || '_top',
title: itemData.title,
tooltip: itemData.tooltip
});
}
});
});
return await itemDataArray.reverse();
}
return {
read: read
}
}();
这是我的调用函数(对失败的地方有评论):
function renderBlog() {
appData.read('blog').then(function(result) {
console.log(result); // This writes a value...
let i = 0;
$.each(result, function( key, value ){
console.log(result[i].created); // Nothing ever happens here...
i++;
});
document.getElementById('Content').innerHTML = 'Done...';
});
}
解决方案
推荐阅读
- javascript - 在 webhook 中获取插槽填充答案作为变量
- python - “fc1 = tf.reshape(conv2, [-1, weights['wd1'].get_shape().as_list()[0]])”在做什么?
- node.js - Node/electron: child_process.exec 即使成功也报错
- javascript - 如何在输入焦点时 div 元素应按其大小缩放(增长)?
- java - 线程“主”java.lang.ClassCastException 中的异常:com.sun.speech.freetts.en.us.cmu_time_awb.AlanVoiceDirectory 类
- python - 从给定的字典列表创建嵌套输出如下
- r - 尝试安装“MAMI”包时出现“包不可用”错误
- string - 汇编中字符串的长度(对程序如何工作的困惑)
- javascript - 使用 d3.js 创建的数组识别空向量
- sql-server - 结合 IN 和 LIKE 功能