在多个模块中使用单个提取请求返回的数据?

时间:2018-11-05 20:30:43

标签: javascript es6-promise fetch-api es6-modules

我正在尝试在消耗该数据的多个模块中使用单个获取请求返回的数据。基本上,我现在拥有的是一个API返回一个JSON,该JSON将用于填充项目的下拉列表,并且当用户从该下拉列表中进行选择时,还将用于获取与该项目相关联的其他信息。

我有3个模块:一个模块导出一个发出获取请求并返回promise的函数,另外两个模块导入该函数并使用promise.then()语法在解析时使用回调填充适当的变量。 。这样就可以在应用程序运行时发出两个提取请求。

很抱歉,如果这是一个新手问题,有没有办法提出单个提取请求,并在解析时在多个模块中使用返回的数据?

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

API调用是由某些函数进行的,并且每次需要进行某些操作时就需要调用函数:

API callFile.js:

function randomNumbers() {
    let num = parseInt(Math.random()*10000);  // In place of API fetch call just to simulate.
    return num; 
}

现在,如果在不同的位置需要使用相同的随机数,则需要将其保存在其他地方将无法访问的位置,并且每次通话都会使用不同的数字。

API callFile.js的一部分:

class Storage {
    constructor() {
        this.num;
    }
    getNumber() {
        if(this.num)
           return this.num;

        this.num = randomNumbers();
        return this.num;
    }
}

module.exports = new Storage();

first.js:

let Storage = require('callFile');

function one() {
    let num = Storage.getNumber();
}

second.js:

let Storage = require('callFile');

function two() {
    let num = Storage.getNumber();
}

通过创建此类,您到处都会得到相同的数据,API仅被称为单一时间。如果需要重置或再次调用API,则甚至可以将某些元素传递到空存储中,然后再次调用API。