首页 > 解决方案 > NodeJs从变量上的异步获取返回数据以重用

问题描述

我已经搜索了几个小时(没有成功)关于如何让异步函数返回结果,将其存储在函数外部的变量中并重用该数据。

我的问题是我在一些似乎不必要的函数中一遍又一遍地获取相同的数据。

基本上这就是我想要的,现在它正在返回一个承诺。

    let leads;
    try {
        var result = await fetch('http://localhost:3000/lds');
        leads = await result.json();
        return leads;

    } catch (e) {
        // handle error
        console.error(e)
    }
}

var results = readDb();
console.log(results);

例如,最初我运行一个函数来获取数据并创建一个表。

其次,我运行另一个函数来获取相同的数据来创建分页按钮。

第三,我再次运行另一个获取相同数据的函数,并监听分页按钮单击以显示相应页码的数据。

理想情况下,我只会获取一次数据。

提前致谢!

标签: node.jspostgresqlexpressasynchronouspromise

解决方案


我们可以leads在函数外部定义并检查是否需要获取它:

let leads;
const getLeads = async function() {

    try {
        if (!leads) { // fetch leads only they weren't already loaded
            const result = await fetch('http://localhost:3000/lds');
            leads = await result.json();
        }
        return leads;

    } catch (e) {
        // handle error
        console.error(e)
    }
}

推荐阅读