JavaScript异步调用问题

时间:2016-06-09 23:40:49

标签: javascript asynchronous

在JavaScript中,我正在尝试使用从MongoDB检索的数据构建HTML表。但是,我遇到了MongoDB调用的异步性问题。

下面是我的代码,我正在构建HTML以插入表格。

问题是,一旦我处于回调状态,我就不知道如何更新超出回调函数范围的资产字符串。

var assets = "";
assets += "<tr><td class='groupHeading'>Bank Accounts and Cash</td></tr>";

var MongoClient = require('mongodb').MongoClient;

var URL = 'mongodb://localhost:27017/alta';

MongoClient.connect(URL, function(err, db) {
    if (err) return;

    var collection = db.collection('account');
    collection.find().toArray(function(err, docs) {
        ==> // How do I get the values from the docs array back to my assets string???
        db.close();
    })
})

assets += "<tr><td></td><td class='balanceUnderline'><hr/></td></tr>";
assets += "<tr><td class='groupTotal'>Total Bank Accounts and Cash</td><td class='balanceCol'>10,000.00</td></tr>";

document.getElementById('AssetsTable').innerHTML = assets;

编辑:我仔细阅读了重复的问题,但似乎 来回答我的问题。在那个问题中,OP明确指出,“为什么在所有这些例子中输出都未定义?我不想要解决方法,我想知道为什么会发生这种情况。”

在我的情况下,我知道发生了什么,但不知道如何得到我想要的东西。

在重复的问题答案/示例中,回调使用传递的数据完成整个工作。就我而言,我需要做以下事情:

  1. 初始化数据
  2. 调用异步函数 - 操纵数据
  3. 回调完成后,再修改数据。
  4. 除非我错过了或不理解,否则我在重复的问题中找不到答案。

0 个答案:

没有答案