从一个promise链中填充完函数后,如何从函数内部返回数组?

时间:2019-01-14 17:28:03

标签: javascript es6-promise

我有以下代码(db_db是分开的,所以请不要感到困惑):

function getValues() {
    let _db = [];

    database
    .init()
    .then(function(db) {

    /* some code that inserts a list of objects into the _db array */

    })
    .finally(function(db) {

    if (db) db.close();

    });

    return _db;
}

问题是,每当我调用getValues()函数时,我总是得到一个空的_db值。我知道它可能与异步JS有关。但是请告诉我如何获得_db的最终值,而不是_db的初始化的空值。

1 个答案:

答案 0 :(得分:0)

_db始终为空的原因是因为对数据库的调用是异步进行的。您的函数在调用完成之前终止,并返回一个空数组。

要处理异步调用,您将必须返回promise,然后由调用者处理

function getValues() {    
    return database
        .init()
        .then(function(db) {

        /* some code that inserts a list of objects into the _db array */

        })
        .finally(function(db) {

        if (db) db.close();

        });
}